使用for循环找到最小值

时间:2016-04-14 06:40:48

标签: java if-statement for-loop minimum

我试图从用户的输入中获取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);

6 个答案:

答案 0 :(得分:7)

你的一个问题是你从smallest = 0开始,这意味着它只会在其中一个输入小于零时改变。有两种方法可以解决这个问题。无论是

  • int smallest = Integer.MAX_VALUE;
  • 开始

OR

  • 将更新smallest的条件更改为if (number < smallest || i == 1 )

此外,如果smallest子句未触发,则您不希望更新if,因此请删除else块。

答案 1 :(得分:5)

有了这个:

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

总是覆盖最小值,无论数字是否小。

完全删除else块,它会起作用。

EDIT 另外:不要使用0作为默认值。 将您读取的第一个值作为原始最小值&#39;

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; 
        }
  }

答案 2 :(得分:2)

尝试这样的事情

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);

答案 3 :(得分:1)

两个问题。

1 - 你的if应该是这样的(删除else块):

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

2 - 你应该将最小值初始化为一个非常大的数字,这样看到的第一个数字总是小于它:

int smallest = Integer.MAX_VALUE;

答案 4 :(得分:0)

解决方案:删除else声明。

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

没有任何else。使用else时,每次都会将smallest的值设置为输入的值。

答案 5 :(得分:0)

这是我首选的smallest变量的首选。在smallest开始之前,完全单独分配给loop。 通过这种方式,我们确切地知道哪个是要分配给smallest的第一个语句,并且正如其他人之前所说的那样,在for if中删除了loop语句的else块。

else块导致OP声称为的问题打印输入的最后一个数字。 ñ 现在,由于提示在两个不同的地方呈现,因此还添加了一个字符串变量来提示&#39;所以它可以重复使用。注意循环计数从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);