数组的逻辑错误

时间:2017-04-18 16:42:43

标签: java arrays

我在使用此代码时出现逻辑错误。我需要从用户那里获得十个int输入,然后打印出任何大于10的数字。唯一的问题是,如果数组中的最后一个数字大于10,则不会打印。

 public class Bigger10
    {
        public static void main(String[] args)
        {
            System.out.println("Please enter 10 integer numbers");

            int[] num = new int[10];
            int count = 0;
            int num1 = StdIn.readInt();

            while(count<9)
            {
                num[count] = num1;
                count++;
                num1 = StdIn.readInt();
            }

            for(int i = 0;i<count;i++)
            {
                if(num[i]>10)
                {
                    System.out.printf("%d ", num[i]);
                }    
            }
        }
    }

2 个答案:

答案 0 :(得分:4)

依靠数组来告诉你它有多大而不是你的常量9

修复很简单:在你的循环中,迭代它的长度。

while(count < num.length) {

}

答案 1 :(得分:1)

        int num1 =0;

        while(count<=9)
        {
            num1 = StdIn.readInt();
            num[count] = num1;
            count++;

        }

count应为<=9,因为您需要扫描10个值。如果是<9,那么您只扫描9个值。

num1 = StdIn.readInt();应该是while循环中的第一个语句。如果将其添加到最后,则表示您正在扫描一个额外的数字。该数字未添加到数组中,因为循环条件变为false,即count变为10.因此,不打印最后一个数字,因为它未添加到数组中。