java - 在函数 "isDigit"java.lang.ArrayIndexOutOfBoundsException : 5

标签 java string encryption char syntax-error

我需要编写加密器。 第一个字母需要转换为其 ASCII 代码。 第二个字母需要与最后一个字母交换

它应该由“65 119esi 111dl 111lw 108dvei 105n 97n 111ka”组成 这“一只聪明的老猫头鹰住在橡树里”

但是当我检查 char 是否是数字时出现错误。

public static void encryptThis(String text) {
        String [] text_arr = text.split("\\s");

        for(int i = 0; i < text_arr.length;i++){
            String word = text_arr[i];

            int length = word.length();

            char [] char_word = new char [length];

            char_word = word.toCharArray();
            int k = 0;

            length = char_word.length;

            char [] numb = new char [length];

            for (int j = 0;j < length; j++){



     //In this place
               if (Character.isDigit(char_word[i])){
                   numb[k] = char_word[i];
                   char_word[i] = ' ';
                   k++;
                   System.out.println(numb[k]);
               }
            }
            int number = Integer.parseInt(numb.toString(),8);
            String edit_char_word = char_word.toString();
            String final_str = new StringBuffer(edit_char_word).reverse().toString().trim();
            final_str = number + final_str;
            text_arr[i] = final_str;

        }
        String fin_text = text_arr.toString();
        return fin_text;

    }

最佳答案

我从一开始就编写了 encryptThis 方法,并尝试保持简单以获得可读的代码,这里是 一个完整的工作示例。由于您没有提到如果数字是第一个“字母”该怎么办,所以没有 对此进行特殊处理 - “1”将被加密为 (ascii) 49...

public class Main_So {
    public static void main(String[] args) {
        System.out.println("https://stackoverflow.com/questions/62460366/in-function-isdigit-java-lang-arrayindexoutofboundsexception-5");
        String input = "A wise old owl lived in an oak";
        String outputExpected = "65 119esi 111dl 111lw 108dvei 105n 97n 111ka";
        System.out.println("input:              " + input);
        String output = encryptThis(input);
        System.out.println("output encryptThis: " + output);
        System.out.println("output expected:    " + outputExpected);
    }

    public static String encryptThis(String text) {
        String[] text_arr = text.split("\\s");
        String outputString = "";
        for (int i = 0; i < text_arr.length; i++) {
            String word = text_arr[i];
            int length = word.length();
            int ascii0 = (int) word.charAt(0);
            String word0 = String.valueOf(ascii0); // first char as ascii code
            String subString = word.substring(1);
            if (length > 2) { // switch chars if string length > 2
                char char1 = word.charAt(1);
                char charEnd = word.charAt(length - 1);
                StringBuilder wordBuilder = new StringBuilder(subString);
                wordBuilder.setCharAt(0, charEnd);
                wordBuilder.setCharAt((length - 2), char1);
                subString = String.valueOf(wordBuilder);
            }
            outputString = outputString + word0 + subString + " ";
        }
        return outputString;
    }
}

这是结果:

input:              A wise old owl lived in an oak
output encryptThis: 65 119esi 111dl 111lw 108dvei 105n 97n 111ka 
output expected:    65 119esi 111dl 111lw 108dvei 105n 97n 111ka

关于java - 在函数 "isDigit"java.lang.ArrayIndexOutOfBoundsException : 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62460366/

相关文章:

使用字符串函数进行 C++ 循环

javascript - 将值传递给正则表达式

c++ - 创建 C 字符串的最佳方法

java - 带有唯一标签的哑 xml 文件 (Java)

java - 安装scala出现错误

java - native 应用程序将字符串传递到网站的简单示例?

encryption - 给定公共(public)和私有(private)指数,如何计算 RSA 模数?

java - AES/CBC/NoPadding 解密中的乱码输出

java - AES 解密的 3gp 文件似乎已损坏

java - 添加源代码来构建路径?