我正在创建一个程序,该程序当前正在将String数组的元素与用户输入的String相匹配,而我遇到的部分是如果用户拼错了数组中的可用单词,我该怎么吐最近的建议(在下面的程序中,如果输入中的六个字母与一个数组元素共享相同的字母)?这是我犯错误的代码段:
int t = 0;
LoopB: while (t < 1) {
for (int i = 0; i <= langs.length; i++) {
Scanner convLangs = new Scanner(langs[i]);
while (! search.equalsIgnoreCase(langs[i])) {
for (int j = 0; j <= langs[i].length(); j++) {
while (convSch.hasNext()) {
String cS = convSch.next();
if (cS.equalsIgnoreCase(convLangs.next())) {
c++;
if (c == 6) {
System.out.println("Did you mean \"" + langs[i] + "\"? Yes or no?");
String confirm = console.next();
if (confirm.equalsIgnoreCase("yes")) {
System.out.println(langs[i]);
break LoopB;
} else if(confirm.equalsIgnoreCase("no")) {
System.out.println("Please check the spelling of your search and try again.");
String redo = console.next();
search = redo;
}
}
}
}
}
}
}
}
无论我做什么,我都会遇到同样的错误,我尝试将“&lt; =”更改为“&lt;”处理数组长度时在循环中,但这不起作用。我对编程完全不熟悉,而且我知道有更简单的方法可以做到这一点,所以如果有人能够基本上告诉我我做错了什么(以及如何修复它以使其工作),那就是很棒,但如果你有任何建议可以更容易地写这个,那也非常感激。
感谢您的时间。
答案 0 :(得分:3)
你一定要用“&lt;”在你的循环中。数组的长度等于元素的数量。因为数组的索引从0开始,所以最后一个可能的索引是length - 1。
迭代数组langs
时,请始终使用
for(int i = 0; i < langs.length; i++) { ... }
或者如果您想要向后迭代
for(int i = langs.length - 1; i >= 0; i--) { ... }
j
变量也是如此。如果你不在任何地方使用它,只想做同样的事情说n
次。您需要从0到n-1
或从1到n
迭代。