如何在Java中找到最小数量的序列输入

时间:2012-08-27 02:12:10

标签: java

我正在开发一个应用程序来查找输入的所有数字的最小值。它接受对话框中的数字,当用户输入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,最有用)

任何帮助感谢。

2 个答案:

答案 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)范围内。