繁体   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