[英]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.