【问题标题】:How do I get the max and min values from a set of numbers entered?如何从输入的一组数字中获取最大值和最小值?
【发布时间】:2013-11-09 09:20:18
【问题描述】:

以下是我目前所拥有的:

我不知道如何排除 0 作为最小数字。作业要求 0 作为退出编号,因此我需要在 min 字符串中显示除 0 之外的最小数字。有什么想法吗?

int min, max;

Scanner s = new Scanner(System.in);
System.out.print("Enter a Value: ");
int val = s.nextInt();
min = max = val;

while (val != 0) {
  System.out.print("Enter a Value: ");
  val = s.nextInt();
  if (val < min) {
      min = val;
  }
  if (val > max) {
     max = val;
  }
};
System.out.println("Min: " + min);
System.out.println("Max: " + max);

【问题讨论】:

  • Math.minMath.max 是你要找的东西
  • 简单的有两个变量,一个叫min,一个叫max,然后检查输入的变量是小于min还是大于max。如果是,请重置变量。
  • 他们会进入 for 还是 if。还是完全在循环之外?
  • 请使用您的代码,实验,尝试。这就是你学习的方式。
  • @ Hovercraft Full Of Eels 好吧,这很有道理。我试试看,谢谢。

标签: java max min


【解决方案1】:

您只需要像这样跟踪最大值:

int maxValue = 0;

然后,当您遍历数字时,如果 maxValue 大于 maxValue,则继续将 maxValue 设置为下一个值:

if (value > maxValue) {
    maxValue = value;
}

以相反的方向重复 minValue。

【讨论】:

  • 最好轻推他,让他创建代码。否则你会欺骗他,让他失去一个体面的学习体验。
  • 在这种情况下,我仍然会使用 Math.max/Math.min(“额外”作业不会打扰我),但这可能不是课程所要寻找的。​​span>
  • @HovercraftFullOfEels 我认为我们对这个很安全......不要认为他会忘记这一点,不管他是怎么做到的。此外,他还必须为 minValue 编写代码。 =)
  • 我将如何分配 minValue,我不知道分配给哪个数字。用户可以输入 99999999999999999999999999999 这可能是最小值,但我不想在我的代码中有 99999999999999999999999999999。也许 Math 类会更好用。
  • @user2934299 见Integer.MIN_VALUE(或任何合适的类型)。但是请注意,最负的 (?) 浮点值(不包括无穷大)实际上是-Double.MAX_VALUE
【解决方案2】:

这是一个可能的解决方案:

public class NumInput {
  public static void main(String [] args) {
    int min = Integer.MAX_VALUE;
    int max = Integer.MIN_VALUE;

    Scanner s = new Scanner(System.in);
    while (true) {
      System.out.print("Enter a Value: ");
      int val = s.nextInt();

      if (val == 0) {
          break;
      }
      if (val < min) {
          min = val;
      }
      if (val > max) {
         max = val;
      }
    }

    System.out.println("min: " + min);
    System.out.println("max: " + max);
  }
}

(不确定使用 int 还是双重思考)

【讨论】:

  • 谢谢,现在说得通了。不敢相信我自己无法解决这个问题。一个问题,对于第一个解决方案: Integer.MAX_INT;整数.MIN_INT;这些是决赛吗?或某种java方法?对不起,如果这是一个愚蠢的问题,但我对这一切都很陌生。
  • @user2934299 它们是常量。它们分别代表int 可以存储的最大和最小数字。
【解决方案3】:
//for excluding zero
public class SmallestInt {

    public static void main(String[] args) {

        Scanner input= new Scanner(System.in);

        System.out.println("enter number");
        int val=input.nextInt();
        int min=val;

        //String notNull;

        while(input.hasNextInt()==true)
        {
            val=input.nextInt();
            if(val<min)
                min=val;
        }
        System.out.println("min is: "+min);
    }
}

【讨论】:

    【解决方案4】:

    这就是我所做的,它可以尝试并尝试使用它。它计算总、平均、最小值和最大值。

    public static void main(String[] args) {
       int[] score= {56,90,89,99,59,67};
       double avg;
       int sum=0;
       int maxValue=0;
       int minValue=100;
    
       for(int i=0;i<6;i++){
           sum=sum+score[i];
       if(score[i]<minValue){
        minValue=score[i];
       }
       if(score[i]>maxValue){
        maxValue=score[i];
       }
       }
       avg=sum/6.0;
    System.out.print("Max: "+maxValue+"," +" Min: "+minValue+","+" Avarage: "+avg+","+" Sum: "+sum);}
    
     }
    

    【讨论】:

      【解决方案5】:

      更好

      public class Main {
      
          public static void main(String[] args) {
      
              System.out.print("Enter numbers: ");
              Scanner input = new Scanner(System.in);
      
              double max = Double.MIN_VALUE;
              double min = Double.MAX_VALUE;
      
              while (true) {
      
                  if ( !input.hasNextDouble())
                      break;
      
                  Double num = input.nextDouble();
      
                  min = Math.min(min, num);
                  max = Math.max(max, num);
      
              }
              System.out.println("Max is: " + max);
              System.out.println("Min is: " + min);
          }
      }
      

      【讨论】:

        【解决方案6】:

        这里你需要跳过 int 0 如下:

        val = s.nextInt();
          if ((val < min) && (val!=0)) {
              min = val;
          }
        

        【讨论】:

          【解决方案7】:
          System.out.print("Enter a Value: ");
          val = s.nextInt();
          

          这一行放在最后。整个代码如下:-

          public static void main(String[] args){
              int min, max;
          
              Scanner s = new Scanner(System.in);
              System.out.print("Enter a Value: ");
              int val = s.nextInt();
              min = max = val;
          
              while (val != 0) {
                  if (val < min) {
                      min = val;
                  }
                  if (val > max) {
                      max = val;
                  }
                  System.out.print("Enter a Value: ");
                  val = s.nextInt();
          
              }
              System.out.println("Min: " + min);
              System.out.println("Max: " + max);
          }
          

          【讨论】:

            【解决方案8】:

            我尝试通过处理用户输入异常来优化解决方案。

            public class Solution {
                private static Integer TERMINATION_VALUE = 0;
                public static void main(String[] args) {
                    Integer value = null;
                    Integer minimum = Integer.MAX_VALUE;
                    Integer maximum = Integer.MIN_VALUE;
                    Scanner scanner = new Scanner(System.in);
                    while (value != TERMINATION_VALUE) {
                        Boolean inputValid = Boolean.TRUE;
                        try {
                            System.out.print("Enter a value: ");
                            value = scanner.nextInt();
                        } catch (InputMismatchException e) {
                            System.out.println("Value must be greater or equal to " + Integer.MIN_VALUE + " and less or equals to " + Integer.MAX_VALUE );
                            inputValid = Boolean.FALSE;
                            scanner.next();
                        }
                        if(Boolean.TRUE.equals(inputValid)){
                            minimum = Math.min(minimum, value);
                            maximum = Math.max(maximum, value);
                        }
                    }
                    if(TERMINATION_VALUE.equals(minimum) || TERMINATION_VALUE.equals(maximum)){
                        System.out.println("There is not any valid input.");
                    } else{
                        System.out.println("Minimum: " + minimum);
                        System.out.println("Maximum: " + maximum);
                    }
                    scanner.close();
                }
            }
            
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2020-08-16
              • 1970-01-01
              • 1970-01-01
              • 2015-06-29
              • 2023-03-18
              • 1970-01-01
              相关资源
              最近更新 更多