【问题标题】:Need help determining maximum and minimum of user inputs需要帮助确定用户输入的最大值和最小值
【发布时间】:2018-03-03 16:32:01
【问题描述】:

我试图确定用户提供的每个输入是否是他们所有输入中的maxmin,然后将该输入分配给变量highlow

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

问题是我不能在不给它赋值的情况下声明变量(例如 0)。例如,如果用户输入357,则low 的值仍定义为0

【问题讨论】:

    标签: java max min


    【解决方案1】:

    问题在于您的以下情况:

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

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

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

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

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

    【讨论】:

    • 如果没有给出输入,第二个解决方案也将摆脱第一个解决方案的怪异行为(在这种情况下,第一个解决方案将具有low &gt; high`)。 +1
    • 是的@JiriTousek。但这只是一个极端情况,程序员也可以以任何方式处理。这取决于一个编码器。
    【解决方案2】:

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

    同样,你应该初始化高为

    high = Double.MIN_VALUE;
    

    【讨论】:

    • double 是:)
    • 很奇怪,我得到0。你用的是哪个IDE?
    【解决方案3】:

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

    double low = Double.MAX_VALUE;
    

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 2016-10-12
        • 1970-01-01
        • 1970-01-01
        • 2015-02-02
        • 2014-12-31
        • 1970-01-01
        • 2020-08-26
        • 2020-02-10
        • 2020-02-28
        相关资源
        最近更新 更多