谁能帮帮我。我在修复代码的逻辑上遇到了困难。这个程序应该计算用户输入的数字的平均值,假设数组的大小设置为100,如果用户输入-99,程序将终止。我知道问题出在while循环处理中
Scanner input = new Scanner(System.in);
int[] num = new int[100];
int ctr=0, sum=0, ave = 0;
while(num[ctr]!= -99)
{
System.out.print("Enter number: ");
num[ctr]= input.nextInt();
sum += num[ctr];
ctr++;
}
System.out.print("Numbers are " );
for(int x = 0; x<ctr; x++)
{
System.out.print(num[x] + " ");
}
ave = sum / (ctr-1);
System.out.println("Average is " + ave);
}
}发布于 2012-12-02 15:33:43
您应该在while while循环之外读取第一个输入。因为当用户进入-99时,在循环中您会递增ctr,因此检查的号码将是错误的。所以实际上你永远不会检查你想要检查的当前号码。
int ctr=0, sum=0, ave = 0;
System.out.print("Enter number: ");
num[ctr]= input.nextInt();
while(num[ctr]!= -99)
{
sum += num[ctr];
ctr++;
System.out.print("Enter number: ");
num[ctr]= input.nextInt();
}但您需要处理用户只输入一个数字的情况,在这种情况下,您将除以零,并且您将得到错误的平均值。您还应执行以下操作:
ave = sum / (ctr);而不是:
ave = sum / (ctr-1);现在你会得到很好的结果。
发布于 2012-12-02 15:27:59
当数组被填充时,您的while循环没有终止条件。(如果输入了100个整数,且ctr等于100。)
发布于 2012-12-02 15:31:52
while循环的问题在于,它从不查看刚刚包含的元素;它总是查看紧随其后的元素。
https://stackoverflow.com/questions/13667276
复制相似问题