扫描 2 个字符串并为每个正确的字符打分

Scan 2 Strings and give points for each right char

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]++;   
        }
      }
    }

Error Oud of Bounds 仅出现在第二个 运行 的 if 情况下。 如果我替换 if(ergebnisse[w].charAt(b)) == eingabe.charAt(X)) 它有效,但仅适用于一个字符。

假设您输入“Pferd”。

您的代码 运行 每个 ergebnisse 一次,所以最终它会变成 Schule

schule 的长度当然是 6。因此 for (int b ) 循环将进行 运行 6 次。不幸的是,您将 运行 在第 6 日 运行 进入实际问题(其中 b5):eingabe.charAt(5) - 不起作用 - eingabe 中没有第 6 个字符,因为 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++)`

您也可以简单地'detect'这是选择一些动作:

if (b < eingabe.length() && ergebnisse[w].charAt(b) == eingabe.charAt(b)) {

例如。

你需要从两者中选择一个来'scan length'