我的if语句不会采用新值

时间:2016-10-19 16:36:33

标签: java

对象是获取输入值的平均值。 输入负数时停止。 我想要输入最小和最大的值。 我遇到的问题是我的if语句不会输入最小/最大的新值。 它只是给了我Integer.Max_ValueInteger.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);
}
}

2 个答案:

答案 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);