循环中有些麻烦

时间:2014-01-05 11:57:10

标签: java loops if-statement

你好,有 我是java的新手,我的代码有问题。我在想,如果它是循环中的问题还是什么......

public static void main(String[] args) {
    try {
        Scanner scn = new Scanner(System.in);

        int z = 0;
        String input;
        int[] ABArray = new int[2];

        while (z == 0) {
            System.out.println("Input X to terminate.");
            System.out.print("Input: ");
            input = scn.nextLine().toLowerCase();

            for (int i = 0; i < input.length(); i++) {
                char AB = input.charAt(i);

                ABArray[AB - 'a']++;
            }

            if (ABArray[0] == 0 || ABArray[1] == 0) {
                System.out.println("Not Equal");
                System.out.println("");

            } else if (ABArray[0] == ABArray[1]) {
                System.out.println("Equal");
                System.out.println("");
            } else if (ABArray[0] != ABArray[1]) {
                System.out.println("Not Equal");
                if (ABArray[0] > ABArray[1]) {
                    System.out.println("The number of A is greater than B.");
                } else if (ABArray[0] < ABArray[1]) {
                    System.out.println("The number of B is greater than A.");
                }
                System.out.println("");
            }
        }
    } catch (ArrayIndexOutOfBoundsException X) { }  //Terminates the program

}

问题是这个
I / O

Input:                      
ABABAB

Output:                              
Equal

Input:                          
AABBB

Output:                            
Not Equal
The number of B is greater than A.

Input:                                 
AABB    //It is equal.

Output:                       
Not Equal  //It says not.
The number of B is greater than A.

如你所见,问题是当我在第一个输入相等的A和B时,它表示相等,当我输入不等于A和B时,但是当我输入相等的A和B时,它表示不相等。 / p>

问题解决了。 谢谢你的帮助。

3 个答案:

答案 0 :(得分:1)

每次开始在ABArray循环内工作时,必须将while中的所有值设置为零。现在,您第三次启动while循环(使用AABB输入)时,仍保留上一次循环运行中留下的值 - 5在0索引中数组的元素和数组的1索引元素中的6,因此程序会给出错误的输出。

答案 1 :(得分:0)

你如何简单地将输入读入一个字符串,然后遍历它,计算你感兴趣的每个字符的出现次数(这里是'a'和'b'),检查它们的计数是否相等?所以这适用于例如:

public static void main(String[] args) {
        try {
            Scanner scanner = new Scanner(System.in);
            String input;

            while (true) {
                System.out.println("Input X to terminate.");
                System.out.print("Input: ");
                input = scanner.nextLine().toLowerCase();
                if (input.equals("X")) {
                    break;
                } else {
                    int countA = 0;
                    int countB = 0;
                    for (int i = 0; i < input.length(); i++) {
                        if (input.charAt(i) == 'a') {
                            countA++;
                        } else if (input.charAt(i) == 'b') {
                            countB++;
                        }
                    }
                    if (countA == countB) {
                        System.out.println("Equal!");
                    } else {
                        System.out.println("Not equal!");
                    }
                }
            }
        } catch (ArrayIndexOutOfBoundsException e) // Terminates the program
        {

        }

    }

答案 2 :(得分:0)

您可以使用此代码:

public static void main( String[] args ) 
{
    try
    {
        Scanner scn = new Scanner(System.in);

        int z=0;
        String input;
        int[] ABArray = null;

        while(z==0)
        {
            ABArray = new int[2];
            System.out.println("Input X to terminate.");
            System.out.print("Input: ");
            input=scn.nextLine().toLowerCase();

            for ( int i = 0; i < input.length(); i++ ) 
            {
                char AB=input.charAt(i);

                ABArray[AB-'a']++;

            }

            if(ABArray[0]==0||ABArray[1]==0)
            {
                System.out.println("Not Equal");
                System.out.println("");

            }
            else if(ABArray[0]==ABArray[1])
            {
                System.out.println("Equal");
                System.out.println("");
            }
            else if(ABArray[0]!=ABArray[1])
            {
                System.out.println("Not Equal");
                if(ABArray[0]>ABArray[1])
                {
                    System.out.println("The number of A is greater than B.");
                }
                else if(ABArray[0]<ABArray[1])
                {
                    System.out.println("The number of B is greater than A.");
                }
                System.out.println("");
            }
        }
    }
    catch(ArrayIndexOutOfBoundsException X) //Terminates the program
    {
      X.printStackTrace();
    }

}