错误:无法从for循环中查找符号

时间:2011-10-09 23:25:28

标签: java

所以我的代码试图找出一个字符串是否与另一个目标字符串(目标已定义)类似。它根据两个字符串中有多少个字母相似来得分。但是,在我的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;
}

2 个答案:

答案 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;
}