在我的代码中,我试图从用户输入的数字序列中查找序列的平均值、最大数字和最小数字。我的问题是我不知道如何编写代码,因此当用户输入 0 或负整数时停止并进行计算。
public class Sequence2
{
public static void main(String[] args)
{
Scanner keyb = new Scanner(System.in);
int count = 0;
double sum = 0;
double avg = 0;
int n;
System.out.println("Enter a sequence of positive integers, which will end with either 0 or a negative integer. ");
int max = keyb.nextInt();
int min = keyb.nextInt();
while (keyb.hasNextInt())
{
n = keyb.nextInt();
if (n > max)
{
max = n;
}
if (n < min)
{
min = n;
}
count++;
sum += n;
}
System.out.println("The maximum value is: " + max);
System.out.println("The minimum value is: " + min);
avg = sum / count;
System.out.println("Average = " + avg);
}
}
最佳答案
解决此问题的关键点是维护在循环外部定义的最小和最大值的状态。特别是,最小值应使用最大可能的整数值作为种子,而最大值可以使用零作为种子。
public static void main(String[] args) {
int minimum = Integer.MAX_VALUE;
int maximum = 0;
int total = 0;
int counter = 0;
Scanner keyb = new Scanner(System.in);
while (true) {
int num = keyb.nextInt();
if (num <= 0) {
System.out.println("Exiting input loop.");
break;
}
if (num < minimum) {
minimum = num;
}
if (num > maximum) {
maximum = num;
}
total += num;
++counter;
}
System.out.println("minimum: " + minimum);
System.out.println("maximum: " + maximum);
System.out.println("average: " + (total / counter));
我省略了一些事情,例如处理用户未在扫描仪中输入有效整数的可能性。另外,我假设用户总是会输入至少一个有效整数。如果不是,我们将不得不在最后处理平均算术以避免被零除。
关于java - 计算整数序列的最大值和最小值的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57099439/