使用while循环为用户输入多个int并找到max和min

时间:2017-09-14 02:41:40

标签: java

所以我的作业问题是提示用户一系列整数并找到那些整数的最大值和最小值。使用循环和-99来打破循环。下面是我的代码,但我的问题是,有更短的方法吗?随时发表评论,感谢您阅读本文。

  Scanner input=new Scanner(System.in);
  int num1,num2,max,min;
  System.out.print("enter a number: ");
  num1=input.nextInt();
  System.out.print("enter another number: ");
  num2=input.nextInt();
  max=Math.max(num1,num2);
  min=Math.min(num1,num2);


  while (num2!=-99){
      System.out.print("enter a number or -99 to stop: ");
      num2=input.nextInt();
      if(num2!=-99){
      max=Math.max(max,num2);
      min=Math.min(min,num2);
      }

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

3 个答案:

答案 0 :(得分:2)

你检查num2 != -99两次的情况,记住编程的第一条规则,不要重复自己

在请求下一个输入之前,您可以通过检查min和max来保存一些行。这样您就不需要检查while循环中是否num2 != -99

答案 1 :(得分:0)

您的代码有一个小错误,可以略微优化。你可能想要考虑的事情:

  • 当用户键入-99作为第二个号码时会发生什么(以及会发生什么?)
  • 您是否一定需要至少2个号码?不能让程序优雅退出吗?第一个数字将是minmax
  • 您是否可以重新订购代码行,以便不再需要重复的(num2!=-99)

专业问题:

  • 如果用户输入某些字母会怎样?你怎么处理这个案子?
  • 如果用户输入超高数字(大于最大整数)会怎样?
  • 如果用户在未输入任何号码的情况下按enter会怎样?

吹毛求疵:

答案 2 :(得分:0)

好的,所以在做完这个之后。我终于做到了。它确实有一个小bug,但我真的不想修复它,所以如果想要编辑它然后成为我的客人。

C:\Program Files\Java\jre1.8.0_91\bin>keytool -list -v -keystore 

这正是您想要的。但是,检查退出信号时出现问题。

 Scanner input = new Scanner(System.in);
    int studentNum = 0;
    ArrayList<Integer> calc = new ArrayList<Integer>();

    while (studentNum <= 100) {

        System.out.print("Enter a number: ");
        calc.add(input.nextInt());

        studentNum += 1;

        if (input.nextInt() == -99) {
            break;
        }

    }

    int min = Collections.min(calc);
    int max = Collections.max(calc);

    for (int i = 0; i < calc.size(); i++) {
        int number = calc.get(i);
        if (number < min)
            min = number;
        if (number > max)
            max = number;
    }

    System.out.println("Max is " + max);
    System.out.println("Min is " + min);

这将检查userInput是否等于-99然后停止程序并计算并打印出最小值和最大值。然而,微小的错误是它首先要求你的号码添加到数组列表,然后它会再次要求userInput检查它是否等于-99。但总体而言,它完全符合您的要求。

希望这有帮助。

编辑我将在稍后处理它并找到一种方法来修复该错误,如果没有其他人知道的话。