所以我的代码试图找出一个字符串是否与另一个目标字符串(目标已定义)类似。它根据两个字符串中有多少个字母相似来得分。但是,在我的for循环中,我为定义tChar时使用的m得到了一个Can not Find Symbol错误,但是它被用来定义iChar ...我很困惑。有更好的方法吗?
public int score(String input){
int score;
char iChar, tChar;
for (int m=0;m<input.length();++m)
iChar = input.charAt(m);
tChar = target.charAt(m);
if (iChar == tChar)
score = score + 1;
else
score = score;
return score;
}
答案 0 :(得分:1)
for (int m=0;m<input.length();++m)
iChar = input.charAt(m); // Only this statement come under loop.
m
的范围仅在for
循环后的第一个语句中,如果您未使用{}
。因此,之后的以下声明不会进行循环。相反,你需要做 -
for (int m=0;m<input.length();++m) // Now m is block scoped
{
iChar = input.charAt(m);
tChar = target.charAt(m);
if (iChar == tChar)
score = score + 1;
else
score = score; // I don't see any use of else at all
}
答案 1 :(得分:0)
你需要在你的for循环周围加上护腕。目前for循环只是一遍又一遍地执行 iChar 行,然后当它退出并进入 tChar 行时,变量 m 超出范围,因此无法找到。
修复后的代码如下。
public int score(String input) {
int score = 0; //i know java instantiates variables for you, but if you do it explicitly, it serves to document your code.
char iChar, tChar;
for (int m = 0; m < input.length(); m++) {
iChar = input.charAt(m);
tChar = target.charAt(m);
if (iChar == tChar) score++; //abbreviated and else clause removed, as it was doing nothing.
}
return score;
}