仅显示循环的最终迭代

时间:2016-09-16 11:54:29

标签: java

我一直在检查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.

3 个答案:

答案 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}}