Java的。为什么我的代码返回无限循环?

时间:2013-10-22 04:25:46

标签: java while-loop infinite-loop

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

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);


    }
}

3 个答案:

答案 0 :(得分:4)

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

基本上,设置

f = f++

不会增加值,而是设置f=f,而只需要f++

正如马苏德所提到的,将您的运营商改为&amp;&amp;和&amp ;.大多数情况下(尤其是使用if语句),您应该使用&&运算符。

答案 1 :(得分:1)

您使用的是&,它是按位运算符。在while循环中使用conditional and (&amp;&amp; )运算符代替&

答案 2 :(得分:0)

好像你有一个增量问题。 1.使用按位和运算符 - '&amp;'似乎没问题。它只是计算条件的两个方面,而不是像“if(foo!= null&amp;&amp; foo.doOpperation)”那样制作快捷方式,如果foo为null,则不会检查右侧,这样你可以避免'null refferance error'。 你以错误的方式表达,“f = f ++”会保持原样。

建议:使用&amp;&amp;在条件和“f ++;”作为增量运算符。 在这种情况下的另一个建议是使用for循环,你的条件很简单,而f和s的操作只是在进行中。