问题描述
- 大神帮看下我的代码哪里错了?
-
题目是编写程序,读入未指定个数的整数,判断读入的正数和负数分别有多少个,然后计算这些输入值的总和及其平均值(不对0计数)。当输入为0时,表明程序结束。将平均值以浮点数显示。import java.util.Scanner;
public class TextXXXXX {
public static void main (String[] args){
Scanner input = new Scanner(System.in);
int count1 = 0 , count2 = 0 , sum = 0 , num;
double avg;
System.out.print("请输入一个整数,输入0时结束:");
num = input.nextInt();
while(num != 0){
System.out.print("请输入一个整数,输入0时结束:");
num = input.nextInt();
while(num > 0)
count1+=1;
while(num < 0)
count2+=1;
sum+=num;
}
avg = sum /(count1 + count2);
System.out.println("整数个数为:" + count1 + " 负数个数为:" + count2);
System.out.println("和为:" + sum);
System.out.println("平均值为:"+ avg);
}
}
解决方案
public static void main(String[] args) {
int count1 = 0, count2 = 0, sum = 0, num;
double avg;
for (int i = 1; i >0; i++) {
Scanner input = new Scanner(System.in);
System.out.print("请输入一个整数,输入0时结束:");
num = input.nextInt();
if (num > 0)
count1 += 1;
if (num < 0)
count2 += 1;
if(num==0){
break;
}
sum += num;
}
avg = sum*1.0 / (count1 + count2);
System.out.println("整数个数为:" + count1 + " 负数个数为:" + count2);
System.out.println("和为:" + sum);
System.out.println("平均值为:" + avg);
}
解决方案二:
while(num > 0)
count1+=1;
while(num < 0)
count2+=1;
这个地方有死循环,while改成if
解决方案三:
while(num > 0)
count1+=1;
while(num < 0)
count2+=1;
这个地方错了,应该用if,因为你每次循环到这并没有改变num的值,所以num就始终死循环了,把while改成if
解决方案四:
while里用if,否则容易出死循环的
解决方案五:
1,while换成if,
2,计算平均数的时候,要使用sum*1.0/(count1+coutn2),否则的话丢掉小数部分
解决方案六:
while换成if就好了!
解决方案七:
while死循环了,建议写个判断然后break掉也可以。不然直接用if循环。
解决方案八:
死循环啦换乘ifjiu好啦