我要做的是使用while循环来检查int数字是正的还是负的,并取决于这些数字是正的还是负的执行相关代码。用户将继续输入数字,直到他们输入一个负数,一旦他们这样做,while循环将退出,它将打印出在输入负数之前所有正数的平均值。我试图让int number在每次用户输入一个数字时被重新分配。
这是我的代码:
import java.util.*;
public class Question7{
public static void main (String [] args){
int number=0;
int average=0;
int counter=0;
int sum=0;
Scanner sc = new Scanner(System.in);
number = sc.nextInt();
while (number > 0) {
counter++;
sum = sum + number;
average= sum/counter;
}
System.out.println("this is the average:" + average);
}
}
您需要在while循环中添加number = sc.nextInt();
。否则就是一个无限循环。
你还忽略了整数除法。上面的大多数答案也忽略了这一点。counter
变量和sum
变量都是整数。因此除法也是整数除法。
sum = 17;
counter = 4;
平均值为17/4=4
因此average应该是double。你必须将sum或counter赋值为double。
int average = 0;
average = (double)sum/counter;
while循环继续运行,直到counter
达到Integer
极限。那么你的计数器将变为0,并抛出一个异常。
您需要将number = sc.nextInt();
行移动到while循环中。因此,每次迭代都需要用户输入。
主要问题是您需要在循环内使用number = sc.nextInt();
读取输入,最好是在循环结束时。
除此之外,如果用户输入一个0怎么办?是否打破这个循环?平均值应该是浮点数还是双精度而不是整型?直到最后才需要计算平均值。最好是告诉用户输入什么,最好是关闭扫描器。
public static void main (String [] args){
int number = 0;
int counter = 0;
int sum = 0;
// prompt the user
String promptMsg = "Enter an integer (negative to quit): ";
System.out.println(promptMsg);
Scanner sc = new Scanner(System.in);
number = sc.nextInt();
while (number >= 0) {
counter++;
sum += number;
// prompt the user to enter the next input
System.out.println(promptMsg);
number = sc.nextInt();
}
// defer computing average until here
double average = sum / counter;
System.out.println("this is the average:" + average);
// close up when done
sc.close();
}
我已经修改了你的代码,它应该是这样的:
int average = 0;
int counter = 0;
int sum = 0;
int number = 0;
Scanner sc = new Scanner(System.in);
number = sc.nextInt();
while (number >= 0)
{
counter++;
sum +=number;
number = sc.nextInt();
}
if (counter == 0)
counter = 1;
average = sum/counter;
System.out.println("this is the average:" + average);
一个基本的解释,一步一步:
- 用户输入号码
- 如果number小于0,直接跳到步骤6。
- 增量计数。
- 将sum设置为之前的sum +用户输入。
- 转到步骤1
- 打印平均值,即
sum/counter
生活例子
编写一个连续取整数的程序,直到用户输入一个负数 。
import java.util.Scanner;
/**
*
* @author MR
*/
public class NewTask9 {
public static void main(String[] args) {
int sum = 0;
Scanner sc = new Scanner(System.in);
while (true) {
int number = sc.nextInt();
if (number < 0) {
break;
}
sum = sum + number;
}
System.out.println("this is the sum:" + sum);
}
}
https://www.youtube.com/@codewithmr786😁