对于课程,我正在编写一个接受正整数流的程序。一旦将负数输入控制台,程序将停止计算数字并计算平均值。
我的问题是,我一直在写一个循环来解释输入的负数。我怎么阻止这个?我试过以下
do{
if (number < 0){
break;
} else if ( number >= 0) {
number = input.nextDouble();
DivideBy++;
sum+=number;
}
}while (number >= 0);
输入1.1,1.9,3和-1时,如果正确答案为2,程序将打印1.25。
以下是我尝试过的另一个例子:
do {
number = input.nextDouble();
DivideBy++;
sum+=number;
}while (number >= 0);
感谢任何帮助。
答案 0 :(得分:0)
试试这个,它对我有用:
while(number >= 0){
total = number + total;
} //Your average logic here//
答案 1 :(得分:0)
试试这个:
Scanner input = new Scanner(System.in);
double number = 0;
double sum = 0;
int divideBy = 0;
double avg = 0;
while(number >= 0) {
System.out.println("Enter number: ");
number = input.nextDouble();
if(number < 0){
break;
}
sum+=number;
divideBy++;
avg = sum/divideBy;
}
System.out.println(avg);
您的if语句应该在从键盘读取数字后出现:]
答案 2 :(得分:0)
您现在正在做的是在增加DivideBy
之后检查数字是否为负,并将数字添加到总和中。
您可以通过撤消在负数后执行的操作来轻松解决此问题。
// outside the loop:
sum -= number;
DivideBy--;
然后你会得到正确的结果。
或者,你可以这样做 - 首先检查否定,然后将其添加到总和。
Scanner s = new Scanner(System.in);
int num = s.nextInt();
int count = 0;
int sum = 0;
while (num > 0) {
sum += num;
count++;
num = s.nextInt();
}
System.out.println(sum / count);
答案 3 :(得分:0)
在if条件之前读取数字。试试这个。
do {
number = input.nextDouble();
if (number < 0) {
break;
} else if (number >= 0) {
DivideBy++;
sum += number;
}
} while (number >= 0);