我是uni的大一新生,我们必须做一个作业,我们必须在一行整数中找到第二小的数字。现在我想我得到它了,但是我不能打印结果。有没有人知道为什么会这样?
package SecondSmallest;
import java.util.Scanner;
import java.io.PrintStream;
public class SecondSmallest {
public static void secondSmallestLoop() {
Scanner in = new Scanner(System.in);
PrintStream out = new PrintStream(System.out);
out.printf("Please enter a series of at least 2 integers: ");
int smallest = in.nextInt();
int secondSmallest = in.nextInt();
while (in.hasNextInt()) {
int next = in.nextInt();
if (next < smallest) {
secondSmallest = smallest;
smallest = next;
}
else if (next < secondSmallest) {
secondSmallest = next;
}
}
out.print("The second smallest number is: " + secondSmallest);
}
public static void main(String[] args) {
SecondSmallest.secondSmallestLoop();
}
}
发布于 2018-09-29 05:32:15
在我看来,最好有一个条件来停止你的扫描仪。所以我建议使用do-while代替。您还应该使用System.out.println,因为它已准备好在您的控制台中打印。您不必每次都实例化PrintStream。顺便说一句,您的代码正在工作,但考虑一下我们给您的想法会很有趣。
发布于 2018-09-29 19:38:26
您的问题是没有为while循环定义停止点。
in.hasNextInt()
mean:如果您输入一个整数,则它将是continue。要停止它,您可以输入一个不是整数的字符。
希望对大家有所帮助
https://stackoverflow.com/questions/52562065
复制相似问题