显示正确的最大和最小数字的问题

时间:2015-03-22 00:18:41

标签: java integer max exit min

我对编程非常陌生,我正在尝试创建一个程序,允许我输入几个整数和一个单独的退出,退出时将返回最大和最小的数字。一切都很好,除了显示最大和最小的数字,它只显示退出整数,在这种情况下为-99。这是我的代码,任何帮助都会很棒。

import java.util.Scanner;


public class LargestSmallest
{
public static void main(String [] args)
{
    //identifier declarations
    int number;
    int numberend = -99;
    int largest = Integer.MIN_VALUE;
    int smallest = Integer.MAX_VALUE;


    //create a Scanner object to read from the keyboard & input
    Scanner keyboard = new Scanner(System.in);
    Scanner input = new Scanner(System.in);

    //display prompts and get input
    System.out.println("Enter an integer, or -99 to quit:");
    number = keyboard.nextInt();
    if (number == -99){ 
    System.out.println("You did not enter any numbers.");
    }else{
    //loop
    while ((number = input.nextInt()) != -99) {
        System.out.println("Enter an integer, or -99 to quit:");

    } 
    }
    //largest & smallest
    {
    if (number > largest)
    largest = number;
    if (number < smallest)
    smallest = number;
    System.out.println("Largest:" + largest);
    System.out.println("Smallest:" + smallest);
    }
}
}

2 个答案:

答案 0 :(得分:1)

您的代码未记录输入时的当前最大和最小数字。请参阅以下修改: -

    public static void main(String[] args) {
    //identifier declarations
    int number;
    int numberend = -99;
    int largest = Integer.MIN_VALUE;
    int smallest = Integer.MAX_VALUE;

    //create a Scanner object to read from input
    Scanner input = new Scanner(System.in);

    //display prompts and get input
    System.out.println("Enter an integer, or -99 to quit:");
    while ((number = input.nextInt()) != numberend) {

        System.out.println("Enter an integer, or -99 to quit:");

        if (number > largest) {
            largest = number;
        }
        if (number < smallest) {
            smallest = number;
        }

    }

    //largest & smallest
    System.out.println("Largest:" + largest);
    System.out.println("Smallest:" + smallest);

}

答案 1 :(得分:0)

当您进入循环时,只会将最后输入的数字保存在number中。要退出循环,您必须输入-99,这也是您保存的唯一数字。因此,在您的代码中,number将始终为-99。 -99大于largestINTEGER.MIN_VALUE)且小于smallestINTEGER.MAX_VALUE),因此这就是打印-99的原因。

要解决此问题,您可以使用两个变量来保存当前最大和当前最小的数字。

您也可以使用列表来解决此问题。将循环中的所有输入保存在ArrayList之类的某种列表中。然后,当用户输入-99时,您必须检查列表以查找最大和最小的数字。这不是最佳解决方案,但可以帮助您了解正在发生的事情。