我不明白为什么我的程序抛出“字符串索引超出范围”错误(Java)

我不明白为什么我的程序抛出“字符串索引超出范围”错误(Java),java,for-loop,Java,For Loop,我的程序是一个基本密码加密方法的粗略规划,通过选择随机数和随机数学运算符,这些随机数和运算符与密钥字符串中的数字一起用于加密密码。但是每当我运行这个程序时,它都会抛出一个错误,在查看了一段时间后,我不知道是什么导致了这个问题 public static void main(String[] args) { String pass = "Password"; String pwE = ""; String key = ""; String keyop = "";

我的程序是一个基本密码加密方法的粗略规划,通过选择随机数和随机数学运算符,这些随机数和运算符与密钥字符串中的数字一起用于加密密码。但是每当我运行这个程序时,它都会抛出一个错误,在查看了一段时间后,我不知道是什么导致了这个问题

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);
}

上面编写的代码有一个逻辑错误,您正在更改j循环末尾的pass值

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

错误抛出在哪一行?异常的确切和完整堆栈跟踪是什么?对于int j=0;jkey.charAt(j)