繁体   English   中英

Java程序中出现ArrayIndexOutOfBoundsException错误,我不知道如何解决

[英]ArrayIndexOutOfBoundsException error in Java program, and I don't know how to fix it

我正在创建一个程序,该程序当前将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;
                            }
                        }
                    }
                }
            }
        }
    }
}

无论做什么,我都会遇到相同的错误,并且在处理数组长度时,我尝试在循环中将“ <=”更改为“ <”,但这是行不通的。 我对编程是完全陌生的,我知道有更简单的方法可以做到这一点,因此,如果有人能够从本质上告诉我我做错了什么(以及如何对其进行修复以使其起作用),那将是太棒了,但是如果您有任何更简便的编写方法建议,也将不胜感激。

感谢您的时间。

您绝对应该在循环中使用“ <”。 数组的长度等于元素的数量。 因为数组的索引从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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM