我正在开发一个应用程序来查找输入的所有数字的最小值。它接受对话框中的数字,当用户输入0时,它显示所有数字的最小值。但我不需要0但是最小值其中的数字。
我的代码如下:
try {
int a, c = 0, d = 0;
do {
a = Integer.parseInt(jOptionPane1.showInputDialog(null, "please enter the number"));
c = Math.min(a, d);
if (a != 0) //since a=0 will be excecuted one time
{
d = c;
}
} while (a != 0);
lb2.setText("Minimum of the numbers is " + d);
} catch (Exception e) {
jOptionPane1.showMessageDialog(this, "Some thing went wrong");
}
我知道它给了我0,因为输入的数字的最小值为零,如果我输入一个小于0的数字(即负数),它给我正确答案。我认为问题也是由于初始化,c = 0。
现在我需要一种方法来查找最小值而不使用任何数组,它应该简单易行。(如果你自己使用Math.min,最有用)
任何帮助感谢。
答案 0 :(得分:4)
只需更改初始设置即可将d
设置为Integer.MAX_VALUE
。
答案 1 :(得分:0)
我对你的代码有一个建议,你应该让每个变量名都有意义。也许你的代码很小,但它会影响你的习惯,当你在大型项目中工作时,你的习惯会对你产生如此大的影响:)
您应该将d = 0
的初始化部分更改为d = Integer.MAX_VALUE
。这是一个新代码:
try {
int inputNumber = 0, min= Integer.MAX_VALUE;
// int c : you don't need this variable
do {
inputNumber = Integer.parseInt(jOptionPane1.showInputDialog(null, "please enter the number"));
if (inputNumber != 0) //since a=0 will be excecuted one time
{
min= inputNumber;
}
} while (inputNumber != 0);
lb2.setText("Minimum of the numbers is " + min);
} catch (Exception e) {
jOptionPane1.showMessageDialog(this, "Some thing went wrong");
}
这个新代码更有意义吗?
并且,为什么必须将初始化更改为min= Integer.MAX_VALUE
?例如,您初始化如下:min = 10;
。在第一次有人输入15时,你的程序会看到:哦,15> 10,所以这不是最小值。但事实上,15是输入的第一个值,它应该是最小值。在有人输入小于10的数字之前,你的程序会出错。
与您的代码比较,因为您初始化d=0
。当您键入d=1
,ops,1> 0时,这不是最小值(如上例所示)。只有当你键入一些数字时,一切都会成立。 0
以上问题发生了,因为虽然用户键入任何数字,但min是初始化数字。 (用户未键入的数字)。这就是为什么你将你的最小值设置为真正非常大的东西。所以, FIRST TIME 你输入一些数字, ALREADY SMALLEST 。
因为机器不像我们,没有“无限”,所以我们必须把它设置为最大的价值。因为d是int,所以int的最大值是Integer.MAX_VALUE
。实际上,您可以为d键入数字。我不记得确切,但整数的最大值在32000(2 ^ 31)范围内。