簡體   English   中英

使用for循環查找最小值

[英]find minimum value using a for loop

我試圖從用戶的輸入中獲取10個整數,並使用for循環查找最小值。

我正在努力正確地編寫if語句。 應該采用第一個輸入並使之最小,然后將第二個輸入與之比較。

我的最終打印語句僅打印最后輸入的數字。

Scanner scan = new Scanner(System.in);

int smallest = 0;
int number = 0;

for (int i = 1; i <= 10; i++) {
   System.out.print("Enter a number > ");
   number = scan.nextInt();

   if (number < smallest) {
       smallest = number; 
   } else {  
       smallest = number; 
   }       
}
System.out.println("The minimum is " + smallest);

您的問題之一是,您從smallest = 0 ,這意味着僅當輸入之一小於零時,它才會更改。 有兩種方法可以解決此問題。 以太網

  • int smallest = Integer.MAX_VALUE;

要么

  • 將更新smallest的條件更改為if (number < smallest || i == 1 )

此外,如果if子句未觸發,您也不想更新smallest的內容,因此請刪除else塊。

有了這個:

if (number < smallest) {
    smallest = number; 
}  else {  
    smallest = number; 
}

無論數字是否較小,您始終會覆蓋最小的值。

完全刪除else塊,它將起作用。

還要編輯:不要使用0作為默認值。 將您讀取的第一個值稱為“原始最小”

System.out.print("Enter a number > ");
int smallest = scan.nextInt();
  int number = 0;

  for (int i = 1; i <= 9; i++) {
     System.out.print("Enter a number > ");
     number = scan.nextInt();
        if (number < smallest) {
           smallest = number; 
        }
  }

試試這個

Scanner scan = new Scanner(System.in);

int smallest = 0;
int number = 0;

for (int i = 1; i <= 10; i++) {
   System.out.print("Enter a number > ");
   number = scan.nextInt();
   if (i == 1){
       smallest = number;
   }
   if (number < smallest) {
       smallest = number; 
   }

}

System.out.println("The minimum is " + smallest);

兩個問題。

1-您的if應該看起來像這樣(刪除else塊):

if (number < smallest) {
 smallest = number; 
}

2-您應該將最小值初始化為一個非常大的數字,以便看到的第一個數字始終小於該數字:

int smallest = Integer.MAX_VALUE;

解決方案:刪除您的else語句。

if (number < smallest) {
    smallest = number; 
}

沒有else 使用else的用法,每次將smallest設置為輸入的值。

這是我對第一個smallest變量進行賦值的偏好。 loop開始之前,請分別對smallest對象進行分配。 這樣,我們就確切地知道哪個是要分配給smallest的第一個語句,並且正如其他人先前所說的,擺脫了for loop if語句的else塊。

else塊導致OP所說的問題是打印最后輸入的數字 N現在,由於提示在2個不同的位置顯示,因此還為“提示”添加了String變量,因此可以重復使用它。 注意循環計數從10減少到9,以僅提示用戶輸入10次。

    Scanner scan = new Scanner(System.in);

      int smallest = 0;
      int number = 0;
      String prompt = "Enter a number > ";

      // First user prompt
      // and first assignment to 'smallest'
      System.out.print(prompt);
      smallest = scan.nextInt();

      for (int i = 1; i <= 9; i++) {
         System.out.print(prompt);
         number = scan.nextInt();

            if (number < smallest) {
               smallest = number; 
            }

      }
         System.out.println("The minimum is " + smallest);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM