过去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]);
}
}
}
答案 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]);
}