对象是获取输入值的平均值。
输入负数时停止。
我想要输入最小和最大的值。
我遇到的问题是我的if语句不会输入最小/最大的新值。
它只是给了我Integer.Max_Value
和Integer.Min_Value
。
import java.util.Scanner;
public class LargeSmallAverage {
public static void main(String[] args) {
// TODO Auto-generated method stub
double count = 0;
double amtOfNums = 0;
int input = 0;
int smallest = Integer.MAX_VALUE, largest = Integer.MIN_VALUE;
int number;
System.out.println("Enter a series of numbers. Enter a negative number to quit.");
Scanner scan = new Scanner(System.in);
while ((input = scan.nextInt()) > 0) {
count += input;
amtOfNums++;
}
while(input>=0){
for(int counter=1; counter<amtOfNums; counter++){
number=scan.nextInt();
if(number<smallest)
smallest=number;
if(number>largest)
largest=number;
}
}
System.out.println("You entered " + amtOfNums + " numbers averaging " + (count/amtOfNums) + ".");
System.out.println("The smallest number is "+ smallest);
System.out.println("The largest number is " + largest);
}
}
答案 0 :(得分:0)
您的while循环条件存在问题:while(input>=0){
此处输入将始终小于零,因为您之前的while语句:while ((input = scan.nextInt()) > 0)
此处while循环仅在您输入小于零的数字时退出..因此输入将具有该值..
答案 1 :(得分:0)
目前您有两个循环。一个数字相加,另一个数字最大和最小。鉴于您的输出,听起来您应该在一个循环中完成所有操作 - 理想情况下也可以使用更有用的变量名称。 (您的count
实际上是一笔金额,而不是一个金额......并且它不需要double
。如果你真的那么你可以将其设为long
想要避免溢出。是的,你需要为你的平均值执行浮点运算,但是当你取平均值时你可以这样做 ...你的和在逻辑上是一个整数。)
int sum = 0;
int smallest = Integer.MAX_VALUE;
int largest = Integer.MIN_VALUE;
int count = 0;
while ((input = scan.nextInt()) >= 0) {
count++;
sum += input;
// Alternative: smallest = Math.min(smallest, input)
if (input < smallest) {
smallest = input;
}
// Alternative: largest = Math.max(smallest, input)
if (input > largest) {
largest = input;
}
}
// Cast for count is just to force floating point division.
System.out.println("You entered " + count +
" numbers averaging " + (sum / (double) count) + ".");
System.out.println("The smallest number is "+ smallest);
System.out.println("The largest number is " + largest);