簡體   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