使用 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);
有了这个:
if (number < smallest) {
smallest = number;
} else {
smallest = number;
}
你总是覆盖最小的值,无论数字是否更小。
完全删除 else 块,它将起作用。
编辑
另外:不要使用 0 作为默认值。
将您读取的第一个值作为 'original smallest'
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;
}
}
解决方案:删除您的 else
语句。
if (number < smallest) {
smallest = number;
}
没有任何else
。使用 else
时,您每次都将 smallest
的值设置为输入的值。
您的问题之一是您从 smallest = 0
开始,这意味着只有当其中一个输入小于零时它才会更改。有两种方法可以解决此问题。两者之一
- 从
int smallest = Integer.MAX_VALUE;
开始
或
- 将
smallest
的更新条件更改为 if (number < smallest || i == 1 )
此外,如果 if
子句未触发,您不想更新 smallest
,因此删除 else
块。
两个问题。
1 - 您的 if 应如下所示(删除 else 块):
if (number < smallest) {
smallest = number;
}
2 - 您应该将最小值初始化为一个非常大的数字,这样看到的第一个数字总是比它小:
int smallest = Integer.MAX_VALUE;
尝试这样的事情
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);
这是我对 smallest
变量进行第一次赋值的偏好。在 loop
开始之前,对 smallest
单独赋值。
通过这种方式,我们确切地知道哪个是分配给 smallest
的第一条语句,并且正如其他人之前所说的那样,摆脱了 for loop
中的 if
语句的 else 块。
else
块导致了 OP 所说的 打印最后输入的数字 的问题。否
现在,由于提示出现在 2 个不同的地方,还为 'prompt' 添加了一个字符串变量,因此可以重复使用。注意循环计数从 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);
我正在尝试从用户输入中获取 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);
有了这个:
if (number < smallest) {
smallest = number;
} else {
smallest = number;
}
你总是覆盖最小的值,无论数字是否更小。
完全删除 else 块,它将起作用。
编辑 另外:不要使用 0 作为默认值。 将您读取的第一个值作为 'original smallest'
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;
}
}
解决方案:删除您的 else
语句。
if (number < smallest) {
smallest = number;
}
没有任何else
。使用 else
时,您每次都将 smallest
的值设置为输入的值。
您的问题之一是您从 smallest = 0
开始,这意味着只有当其中一个输入小于零时它才会更改。有两种方法可以解决此问题。两者之一
- 从
int smallest = Integer.MAX_VALUE;
开始
或
- 将
smallest
的更新条件更改为if (number < smallest || i == 1 )
此外,如果 if
子句未触发,您不想更新 smallest
,因此删除 else
块。
两个问题。
1 - 您的 if 应如下所示(删除 else 块):
if (number < smallest) {
smallest = number;
}
2 - 您应该将最小值初始化为一个非常大的数字,这样看到的第一个数字总是比它小:
int smallest = Integer.MAX_VALUE;
尝试这样的事情
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);
这是我对 smallest
变量进行第一次赋值的偏好。在 loop
开始之前,对 smallest
单独赋值。
通过这种方式,我们确切地知道哪个是分配给 smallest
的第一条语句,并且正如其他人之前所说的那样,摆脱了 for loop
中的 if
语句的 else 块。
else
块导致了 OP 所说的 打印最后输入的数字 的问题。否
现在,由于提示出现在 2 个不同的地方,还为 'prompt' 添加了一个字符串变量,因此可以重复使用。注意循环计数从 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);