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