我在使用此代码时出现逻辑错误。我需要从用户那里获得十个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]);
}
}
}
}
答案 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.因此,不打印最后一个数字,因为它未添加到数组中。