我无法弄清楚为什么我的程序会抛出" String Index Out of Range"错误(Java)

时间:2017-03-19 17:13:03

标签: java for-loop

我的程序是加密密码的基本方法的粗略计划,通过选择与"键"中的数字一起使用的随机数和随机数学运算符。用于加密密码的字符串。但是每当我运行它时,程序都会抛出一个错误,经过一段时间的查看,我无法分辨导致问题的原因。

public static void main(String[] args) {

    String pass = "Password";
    String pwE = "";
    String key = "";
    String keyop = "";

    for (int i = 0; i < pass.length(); i++) {
        key += (int) (Math.random() * 9 + 1);
    }

    for (int i = 0; i < pass.length(); i++) {
        keyop += (int) (Math.random() * 4 + 1);

    }

    System.out.println(keyop);
    System.out.println(key);

    for (int i = 0; i < pass.length(); i++) {

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

            if (keyop.charAt(i) == '1') {
                pwE += " " + (char) (pass.charAt(i) + (key.charAt(j)));
            } else if (keyop.charAt(i) == '2') {
                pwE += (char) (pass.charAt(i) - key.charAt(j));
            } else if (keyop.charAt(i) == '3') {
                pwE += (char) (pass.charAt(i) * key.charAt(j));
            } else if (keyop.charAt(i) == '4') {
                pwE += " " + ((double) (pass.charAt(i) / key.charAt(j))) + " ";
            }
        }
        pass = pwE;
        pwE = "";
    }

    System.out.println(pass);
}

1 个答案:

答案 0 :(得分:0)

上面编写的代码有一个逻辑错误,你正在改变j循环结束时pass的值。

for (int j = 0; j < pass.length(); j++) {}  pass = pwE;

现在传递更改的值超过7,您将在

处收到错误“String index out of range 8”
key.charAt(j)