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)
你的一个问题是你开始使用smallest = 0,这意味着它只会在其中一个输入小于零时改变.有两种方法可以解决这个问题.无论是
int smallest = Integer.MAX_VALUE;要么
smallest为if (number < smallest || i == 1 )此外,smallest如果if子句未触发,则不希望更新,因此请删除该else块.
有了这个:
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)