String[] ergebnisse = {"Err", "Baum", "Schule", "Pferd", "Maschine"};
String eingabe = textField1.getText();
int[] punkte = new int[ergebnisse.length];
for (int w = 0; w < ergebnisse.length; w ) {
for (int b = 0; b < ergebnisse[w].length(); b ) {
if (ergebnisse[w].charAt(b) == eingabe.charAt(b)) {
punkte[w] ;
}
}
}
錯誤 Oud of Bounds 僅在第二次運行的 if 情況下出現。如果我替換 if(ergebnisse[w].charAt(b)) == eingabe.charAt(X)) 它可以作業,但僅適用于一個字符。
uj5u.com熱心網友回復:
假設您輸入“Pferd”。
您的代碼為每個運行一次ergebnisse,所以最終它會運行到Schule.
當然,schule 的長度是 6。這樣for (int b ) 回圈將運行 6 次。不幸的是,您將在第 6 次運行時遇到真正的問題(其中b是5):eingabe.charAt(5)-這不起作用- 中沒有第 6 個字符eingabe,因為 eingabe 中只有 5 個字母。
解決方法是解決這個問題。您不能將其切換并更改回圈for (int b = 0; b < eingabe.length(); b )- 如果 eingabe 比其中一個 ergebnisse 長怎么辦?
您可以選擇較小的一個:
for (int b = 0; i < Math.min(eingabe.length(), ergebnisse[w].length()); b )`
您也可以簡單地“檢測”這是選擇一些操作:
if (b < eingabe.length() && ergebnisse[w].charAt(b) == eingabe.charAt(b)) {
例如。
您需要選擇兩者之一來“掃描長度”
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/487388.html
