簡體   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