【问题标题】:Issue in displaying correct largest and smallest numbers显示正确的最大和最小数字的问题
【发布时间】:2015-05-25 05:20:51
【问题描述】:

我对编程很陌生,我正在尝试创建一个程序,允许我输入几个整数和一个单独的退出,退出时将返回最大和最小的数字。一切都很好,除了显示最大和最小数字时,它只显示退出整数,在本例中为 -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);
    }
}
}

【问题讨论】:

    标签: java integer max exit min


    【解决方案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);
    
    }
    

    【讨论】:

    • 另外,有没有办法做到这一点,并且仍然可以选择在循环中没有输入数据时包含一条语句?
    • 如果输入了 -99 以外的数字,您可以设置布尔值。然后在打印数字时在 if 语句中使用它。
    【解决方案2】:

    在您的循环中,您仅将最后输入的数字保存在 number 中。要退出循环,您必须输入 -99,这也是您保存的唯一数字。因此,在您的代码中,number 将始终为 -99。 -99 既大于您的 largest (INTEGER.MIN_VALUE) 又小于您的 smallest (INTEGER.MAX_VALUE),因此这就是打印 -99 的原因。

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

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

    【讨论】:

    • 我会试试这些选项。谢谢你的建议。
    猜你喜欢
    • 1970-01-01
    • 2012-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-06
    • 1970-01-01
    • 1970-01-01
    • 2019-08-18
    相关资源
    最近更新 更多