(Java) 如何跟踪用户输入的数字以确定最小值和最大值
(Java) How to Keep Track of Numbers Entered by User for Determining Min and Max
我的家庭作业要求我使用输入对话框要求最终用户输入数字,将该字符串解析为 int,然后使用确认对话框询问用户是否要输入另一个号码。如果他们单击“是”,程序将循环,一旦他们单击“否”,它就会获取所有输入的数字并确定最小值和最大值。如何在不声明多个变量来保存它们的情况下跟踪所有输入的数字(因为用户在技术上可以输入无限数量的数字)?
我对编程还很陌生。我一直在搜索我的教科书,我浏览了 Stack Overflow 以找到我的具体问题但没有找到任何东西,至少在 Java.
{
int yes = JOptionPane.YES_OPTION;
do
{
String numberstring = JOptionPane.showInputDialog("Enter a "
+ "number: ");
int number = Integer.parseInt(numberstring);
yes = JOptionPane.showConfirmDialog(null, "Do you want to enter"
+ " another number?", "MinMax", JOptionPane.YES_OPTION);
}
while (yes == JOptionPane.YES_OPTION);
JOptionPane.showMessageDialog(null, "The min is " + min + " and the"
+ " max is " + max);
}
我并没有收到任何错误,我只是不知道如何保存来自用户的可能无限数量的条目,因为程序会循环直到用户单击 "no"。
创建最小和最大变量,并在每次用户输入新数字时更新它们:
int min = Integer.MAX_VALUE, max = Integer.MIN_VALUE;
...
int number = Integer.parseInt(numberstring);
min = Math.min(number, min);
max = Math.max(number, max);
如果您真的想保留 所有 个数字,您可以创建一个列表并继续向其中添加输入的数字:
List<Integer> allNumbers = new LinkedList<>();
do {
String numberstring = JOptionPane.showInputDialog("Enter a number: ");
int number = Integer.parseInt(numberstring);
allNumbers.add(number);
yes = JOptionPane.showConfirmDialog
(null,
"Do you want to enter another number?",
"MinMax",
JOptionPane.YES_OPTION);
} while (yes == JOptionPane.YES_OPTION);
但是,您应该注意这是一种非常低效的方法 - 您实际上并不需要所有数字,只需要最小值和最大值,您可以边计算边计算,并避免存储所有这些数字:
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
do {
String numberstring = JOptionPane.showInputDialog("Enter a number: ");
int number = Integer.parseInt(numberstring);
max = Math.max(max, number);
min = Math.min(min, number);
yes = JOptionPane.showConfirmDialog
(null,
"Do you want to enter another number?",
"MinMax",
JOptionPane.YES_OPTION);
} while (yes == JOptionPane.YES_OPTION);
您可以按照以下方式进行:
{
int yes = JOptionPane.YES_OPTION;
List<Integer> list=new ArrayList<Integer>();
do
{
String numberstring = JOptionPane.showInputDialog("Enter a "
+ "number: ");
int number = Integer.parseInt(numberstring);
list.add(number);
yes = JOptionPane.showConfirmDialog(null, "Do you want to enter"
+ " another number?", "MinMax", JOptionPane.YES_OPTION);
}
while (yes == JOptionPane.YES_OPTION);
int min = list.get(0), max = list.get(0);
for (int i = 1; i < list.size(); i++) {
if (min > list.get(i))
min = list.get(i);
if (max < list.get(i))
max = list.get(i);
}
JOptionPane.showMessageDialog(null, "The min is " + min + " and the"
+ " max is " + max);
}
我的家庭作业要求我使用输入对话框要求最终用户输入数字,将该字符串解析为 int,然后使用确认对话框询问用户是否要输入另一个号码。如果他们单击“是”,程序将循环,一旦他们单击“否”,它就会获取所有输入的数字并确定最小值和最大值。如何在不声明多个变量来保存它们的情况下跟踪所有输入的数字(因为用户在技术上可以输入无限数量的数字)?
我对编程还很陌生。我一直在搜索我的教科书,我浏览了 Stack Overflow 以找到我的具体问题但没有找到任何东西,至少在 Java.
{
int yes = JOptionPane.YES_OPTION;
do
{
String numberstring = JOptionPane.showInputDialog("Enter a "
+ "number: ");
int number = Integer.parseInt(numberstring);
yes = JOptionPane.showConfirmDialog(null, "Do you want to enter"
+ " another number?", "MinMax", JOptionPane.YES_OPTION);
}
while (yes == JOptionPane.YES_OPTION);
JOptionPane.showMessageDialog(null, "The min is " + min + " and the"
+ " max is " + max);
}
我并没有收到任何错误,我只是不知道如何保存来自用户的可能无限数量的条目,因为程序会循环直到用户单击 "no"。
创建最小和最大变量,并在每次用户输入新数字时更新它们:
int min = Integer.MAX_VALUE, max = Integer.MIN_VALUE;
...
int number = Integer.parseInt(numberstring);
min = Math.min(number, min);
max = Math.max(number, max);
如果您真的想保留 所有 个数字,您可以创建一个列表并继续向其中添加输入的数字:
List<Integer> allNumbers = new LinkedList<>();
do {
String numberstring = JOptionPane.showInputDialog("Enter a number: ");
int number = Integer.parseInt(numberstring);
allNumbers.add(number);
yes = JOptionPane.showConfirmDialog
(null,
"Do you want to enter another number?",
"MinMax",
JOptionPane.YES_OPTION);
} while (yes == JOptionPane.YES_OPTION);
但是,您应该注意这是一种非常低效的方法 - 您实际上并不需要所有数字,只需要最小值和最大值,您可以边计算边计算,并避免存储所有这些数字:
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
do {
String numberstring = JOptionPane.showInputDialog("Enter a number: ");
int number = Integer.parseInt(numberstring);
max = Math.max(max, number);
min = Math.min(min, number);
yes = JOptionPane.showConfirmDialog
(null,
"Do you want to enter another number?",
"MinMax",
JOptionPane.YES_OPTION);
} while (yes == JOptionPane.YES_OPTION);
您可以按照以下方式进行:
{
int yes = JOptionPane.YES_OPTION;
List<Integer> list=new ArrayList<Integer>();
do
{
String numberstring = JOptionPane.showInputDialog("Enter a "
+ "number: ");
int number = Integer.parseInt(numberstring);
list.add(number);
yes = JOptionPane.showConfirmDialog(null, "Do you want to enter"
+ " another number?", "MinMax", JOptionPane.YES_OPTION);
}
while (yes == JOptionPane.YES_OPTION);
int min = list.get(0), max = list.get(0);
for (int i = 1; i < list.size(); i++) {
if (min > list.get(i))
min = list.get(i);
if (max < list.get(i))
max = list.get(i);
}
JOptionPane.showMessageDialog(null, "The min is " + min + " and the"
+ " max is " + max);
}