2

它应该计算字符串中匹配对的数量。

public class tests {
    public static void main(String[] args) {

        System.out.print("Please enter a word: ");
        Scanner inpFirst = new Scanner(System.in);
        String inputF = inpFirst.nextLine();

        System.out.print("Please enter another word: ");
        Scanner inpSecond = new Scanner(System.in);
        String inputS = inpSecond.nextLine();

        int lenghtF = inputF.length() - 1;
        int lengthS = inputS.length() - 1;
        int f = 0;
        int s = 0;
        int matchingPairs = 0;

        while ((f < lenghtF) & (s < lengthS)) {
            char testF = inputF.charAt(f);
            char testS = inputS.charAt(s);
            if (testF == testS) {
                char testTwoF = inputF.charAt(f+1);
                char testTwoS = inputS.charAt(f+1);
                if (testTwoF == testTwoS)
                    matchingPairs = matchingPairs++;
            }
            System.out.println("jrfjtf");
            f = f++; 
            s = s++;
        }
        System.out.println("The number of matching pairs is: " + matchingPairs);


    }
}
4

3 回答 3

4

将循环的最后两行更改为f++s++

基本上,设置

f = f++

不会增加值,它会设置f=f,而是您想要的f++

正如 Masud 所提到的,将您的运算符从 && 和 & 更改。大多数时候(尤其是使用 if 语句),您应该使用&&运算符。

于 2013-10-22T04:27:01.067 回答
1

您使用&的是按位运算符。使用conditional and (&&) 运算符代替&while 循环。

于 2013-10-22T04:27:58.367 回答
0

好像你有一个增量问题。1. 使用按位和运算符 - '&' 似乎没问题。它只是计算条件的两边并走很长的路,而不是像 "if(foo != null && foo.doOpperation) 如果 foo 为 null ,右侧不会被检查,这样你就可以避免'null refferance error'. 2. 你以错误的方式添加,“f=f++”将保持 f 原样。

建议:在条件句中使用 && 和 "f++;" 作为增量运算符。在这种情况下,另一个建议是使用 for 循环,您的条件很简单,并且对 f 和 s 的操作只是 inceementation。

于 2013-10-22T04:35:29.667 回答