我一直在检查StackOverflow一段时间,现在终于有时间让我注册了。我在网站上找不到我的问题,所以我想我会自己问一下。我在下面复制了我的代码。 我这样做是为了完成学校作业。它完成它应该做的一切(找到第二个最小的数字),但输出不是我想要的。我已经尝试将out.printf语句放在其他地方,但它只是不起作用。首先发生的是前两个数字自动分配给smallestNumber和secondSmallestNumber,分配表示输入的第一个数字应始终小于第二个数字。之后它进入循环并比较所有数字。最后它应该打印出最后的secondSmallestNumber。但它只打印所有。我尝试了几件事,但我无法做到这一点。请帮帮我
EDIT : teaching assistant told me I can't submit my assignments online in the event of fraud. So I'm sorry have to delete this code.
答案 0 :(得分:2)
要重复做某事,你要把它放在循环中。因此,要不重复执行,将放在循环之外。
答案 1 :(得分:1)
将out.printf("%s%d\n", "The second smallest number is : ", secondSmallestNumber);
移到while循环之外。
答案 2 :(得分:1)
正如其他人所说 - 你应该在循环外移动打印。最后,您还会flush
printstream
您的 package module2;
import java.io.PrintStream;
import java.util.Scanner;
public class SecondSmallest {
PrintStream out;
SecondSmallest() {
out = new PrintStream(System.out);
}
void start() {
Scanner in = new Scanner(System.in);
out.printf("%s", "Enter multiple numbers divided by a space and close with Enter: ");
int newNumber;
int smallestNumber = in.nextInt();
int secondSmallestNumber = in.nextInt();
while (in.hasNext()) {
newNumber = in.nextInt();
if (newNumber < smallestNumber) {
secondSmallestNumber = smallestNumber;
smallestNumber = newNumber;
}
}
//moved here to print only once
out.printf("%s%d\n", "The second smallest number is : ", secondSmallestNumber);
//flush output stream
out.flush();
}
public static void main(String[] argv) {
new SecondSmallest().start();
}
。所以试试这个:
{{1}}