扫描 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 日 运行 进入实际问题(其中 b
是 5
):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'
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 日 运行 进入实际问题(其中 b
是 5
):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'