使用for循环找到最小值

ceg*_*n55 0 java for-loop if-statement 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);
Run Code Online (Sandbox Code Playgroud)

Daw*_*ica 7

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

  • 从...开始 int smallest = Integer.MAX_VALUE;

要么

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

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


Stu*_*ske 5

有了这个:

if (number < smallest) {
    smallest = number; 
}  else {  
    smallest = number; 
}
Run Code Online (Sandbox Code Playgroud)

无论数字是否更小,您始终都会覆盖最小值.

完全删除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; 
        }
  }
Run Code Online (Sandbox Code Playgroud)

  • 只是为了完成您的答案,将最小的初始化为 0 可能会产生不正确的结果。最好将其初始化为最大的整数值。 (2认同)