在两个不同大小的数组上循环的用户关键字替换密码

时间:2018-11-14 16:27:31

标签: java arrays encryption

过去4周的编程对我来说很容易...

目标:我需要接受用户输入的“关键字”,并在字母密码中使用此关键字。

示例:用户提供了关键字“ SALT”。

密码::SALTBCDEFGHIJKMNOPQRUVWXYZ。 (关键字+其余字母)

我已将我的string关键字设置为char数组,并且有一个字母数组。我希望代码在两个数组上循环,如果字母字母不存在(等于)关键字字母,则它将其添加到关键字的末尾。

问题-我收到ArrayOutOfBoundsException-我相信这是由于我的两个数组大小不同吗?不知道如何解决。另外我还需要创建第三个数组来容纳关键字+其余字母,因为数组无法更改大小吗?我只能使用数组(列表,哈希集等,因为我还没学过)。感谢您的帮助。

    char[] arr = keyWord.toCharArray();
    for (char c:arr) {
        System.out.println(c); //printing to see if it worked   
    }

    char [] alphabet = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
            'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U',
            'V', 'W', 'X', 'Y', 'Z'
            };

    System.out.println(alphabet);

    boolean flag = false;
    for (int i = 0; i <alphabet.length; i++) {
        for (int j = 0; j <keyWord.length(); j++) {

            if (alphabet[j] != arr[i]) 
            //if alpha letter is not equal to keyword letters
            flag = false;
            break;
            }
            if (flag)
            //(false) just trying to print anything so
            // i can see whats happening..
                System.out.println(alphabet[i]);

    }
}

}

1 个答案:

答案 0 :(得分:3)

有些变量命名问题使您感到困惑。在循环范围控件中,将keyWord替换为arr,因为您现在正在使用arr。然后,您会看到arr必须用j而不是i进行索引。

for (int i = 0; i <alphabet.length; i++) {
    for (int j = 0; j <arr.length(); j++) { //---------> notice me

        if (alphabet[i] != arr[j])  //---------> notice me, too
            //if alpha letter is not equal to keyword letters
            flag = false;
            break;
    }
    if (flag)
    //(false) just trying to print anything so
    // i can see whats happening..
    System.out.println(alphabet[i]);

}