需要帮助确定用户输入的最大值和最小值

时间:2017-09-22 07:13:39

标签: java max min

我正在尝试确定用户提供的每个输入是否是所有输入中的maxmin,然后将该输入分配给变量high或{{ 1}}

low

问题是我无法在不为其赋值的情况下声明变量(例如0)。例如,如果用户输入int inputnum = 0; double sum = 0; double lastinput = 0; double high; double low; double average; Scanner input = new Scanner(System.in); high = 0; low = 0; do { System.out.println("Enter a number. Type 0 to quit."); lastinput = input.nextDouble(); //reads input sum += lastinput; //add to sum if (lastinput != 0) { inputnum += 1; //counts number of inputs (except 0) } if (lastinput > high && lastinput != 0) { high = lastinput; } if (lastinput < low && lastinput != 0) { low = lastinput; } average = (sum / inputnum); } while (lastinput !=0); //repeat unless user inputs 0 357值仍定义为low

4 个答案:

答案 0 :(得分:2)

这是因为您将low初始化为零,并且您输入的所有值都更大,因此永远不会更新。您必须将其分配给可能的最高值 - low = Double.MAX_VALUE;,以便所有其他值都低于它。

同样,您应该将高位初始化为

high = Double.MIN_VALUE;

答案 1 :(得分:2)

问题出在以下情况:

if (lastinput < low && lastinput != 0) {
    low = lastinput;
}

请注意,变量low最初为0。因此,如果您的实际最小值高于0,那么它不会影响low的值,因为它是0.可以有几个逻辑解决方案:

  1. 使用标记值:使用最高可能值double初始化为低,以便用户输入始终较低,因此会影响low的值

    double low = Double.MAX_VALUE;
    
  2. 更改if条件:您可以更改if条件以说明初始值为0的事实。

    if (low==0 || (lastinput < low && lastinput != 0)) {
        low = lastinput;
    }
    

答案 2 :(得分:1)

默认情况下,您应使用low的最大值,否则非负输入的条件lastinput < low将始终为false,并且0仍为输出。

double low = Double.MAX_VALUE;

答案 3 :(得分:0)

lowhigh的值可以在循环之前通过您的第一个输入初始化。