显示正确的最大和最小数字的问题
Issue in displaying correct largest and smallest numbers
我是编程的新手,我正在尝试创建一个程序,允许我输入几个整数和一个单独的整数退出,退出时将 return 包含最大和最小的数字.一切正常,除了显示最大和最小数字时它只显示退出整数,在本例中为 -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);
}
}
}
您的代码在输入时未跟踪当前最大和最小数字。请参阅以下修改:-
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);
}
在循环中,您只将最后输入的数字保存在 number
中。要退出循环,您必须输入 -99,这也使它成为您保存的唯一数字。因此,在您的代码中,number
将始终为 -99。 -99 既大于 largest
(INTEGER.MIN_VALUE
) 又小于 smallest
(INTEGER.MAX_VALUE
),所以这就是打印 -99 的原因。
解决这个问题,可以用两个变量来保存当前最大和当前最小的数。
您也可以使用列表来解决这个问题。将循环中的所有输入保存在某种列表中,例如 ArrayList
。然后,当用户输入 -99 时,您必须检查列表以找到最大和最小的数字。这不是最佳解决方案,但可以帮助您了解正在发生的事情。
我是编程的新手,我正在尝试创建一个程序,允许我输入几个整数和一个单独的整数退出,退出时将 return 包含最大和最小的数字.一切正常,除了显示最大和最小数字时它只显示退出整数,在本例中为 -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);
}
}
}
您的代码在输入时未跟踪当前最大和最小数字。请参阅以下修改:-
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);
}
在循环中,您只将最后输入的数字保存在 number
中。要退出循环,您必须输入 -99,这也使它成为您保存的唯一数字。因此,在您的代码中,number
将始终为 -99。 -99 既大于 largest
(INTEGER.MIN_VALUE
) 又小于 smallest
(INTEGER.MAX_VALUE
),所以这就是打印 -99 的原因。
解决这个问题,可以用两个变量来保存当前最大和当前最小的数。
您也可以使用列表来解决这个问题。将循环中的所有输入保存在某种列表中,例如 ArrayList
。然后,当用户输入 -99 时,您必须检查列表以找到最大和最小的数字。这不是最佳解决方案,但可以帮助您了解正在发生的事情。