繁体   English   中英

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

[英]How to find the minimum number of sequence input in 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本身最有用)

任何帮助表示赞赏。

只需将您的初始化更改为将d设置为Integer.MAX_VALUE

我对您的代码有建议,建议您使每个变量名都有意义。 也许您的代码很小,但它会影响您的习惯,而当您在大型项目中工作时,您的习惯将对您造成很大的影响:)

您应该将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的数字时,所有内容才会成立。

所有上述问题都会发生,因为尽管用户键入任何数字,但最小值是初始化数字。 (用户未输入的数字)。 这就是为什么您将最小值设置为非常大的原因。 所以,当您第一次输入一些数字,它已经 最小

因为机器不像我们一样没有“无限”,所以我们必须将其设置为最大可能值。 并且由于d是一个int,所以int的最大值是Integer.MAX_VALUE 实际上,您可以为d键入数字。 我记不清了,但是整数的最大值在32000(2 ^ 31)范围内。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM