我对编程非常陌生,我正在尝试创建一个程序,允许我输入几个整数和一个单独的退出,退出时将返回最大和最小的数字。一切都很好,除了显示最大和最小的数字,它只显示退出整数,在这种情况下为-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);
}
}
}
答案 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大于largest
(INTEGER.MIN_VALUE
)且小于smallest
(INTEGER.MAX_VALUE
),因此这就是打印-99的原因。
要解决此问题,您可以使用两个变量来保存当前最大和当前最小的数字。
您也可以使用列表来解决此问题。将循环中的所有输入保存在ArrayList
之类的某种列表中。然后,当用户输入-99时,您必须检查列表以查找最大和最小的数字。这不是最佳解决方案,但可以帮助您了解正在发生的事情。