最伟大和最少的。代码编辑

时间:2017-04-21 12:25:26

标签: java

我需要完成我的任务,但我被困在如此奇怪的地方。我几乎完成了所有代码,但是我在分配小值时遇到了问题。

  • 当我键入-99程序时停止。完美
  • 当我输入字符串时,try-catch有效。完美
  • 当我键入数字最大值显示。完美

但是当我键入数字5 15 26 68时。显示最大数字是68.最小数字是0。 我需要解决这个问题,但我不能。 你能帮我解决一下吗?

    String str; // to hold input string
    int a; // for convert string to int
    int max = 0; // max and min assigned to min/max values.
    int min = 0;


    Scanner input = new Scanner(System.in); // Create a Scanner object to read input.
    boolean can = true; //boolean loop

    // Get the user's input.
    while (can) // input validation loop
    {

        try    
        {

            System.out.println("Enter an integer ( press -99 to quit)"); //direction to user.
            str = input.nextLine(); // get a string containing an int number
            str = str.trim(); // remove any extra whitespace from string sides
            a=Integer.parseInt(str); // convert. 


            if(a==-99)
            {
                System.out.println("The maximum is:'"+max+" and the minimum is: "+min+"'.");
                break;
            }


            if(a>max) // max and min number formulas
            {
                max=a;
            }


            if(a<min)
            {
                min=a;
            }       
        }

        catch (Exception e) // handle the exception below
        {
            System.out.println("INPUT ERROR: Please enter an integer number!!"); // output error
            System.out.println(e.getMessage()); // show what user did/wrote.

        }
    }

4 个答案:

答案 0 :(得分:2)

您应该将min初始化为较大的值,而不是0

将其设置为int的最大值,如下所示:

int min = Integer.MAX_VALUE;

同样,如果您的程序接受负值,则最好将max初始化为可能的最小整数(-2147483648),而不是0

int max = Integer.MIN_VALUE;

答案 1 :(得分:0)

出现问题的原因是您在程序开头将最小值设置为0。因此,只有小于该值的数字将为负数。 5大于0.

理想的方法是使用int min = Integer.MAX_VALUE,它将min初始化为最大可能的整数值。因此,所有数字应小于或等于该数字,除非它的大小大于可存储在4个字节中的数量

如其他答案所述,您还应考虑设置int max = Integer.MIN_VALUE

答案 2 :(得分:0)

代码if(a<min) min =a;永远不会执行,因为您的a值始终小于min。您应该将min值初始化为第一个值。

答案 3 :(得分:0)

从屏幕截图中一切正常。输入序列产生正确的结果:

start    max = 0;  min = 0;
=> 5     max = 5;  min = 0;
=> 15    max = 15; min = 0;
=> 26    max = 26; min = 0;
=> 68    max = 68; min = 0;

要获得正确的结果,您应该:

int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;