Java 仅显示循环中的最终迭代

Java 仅显示循环中的最终迭代,java,Java,我已经检查StackOverflow有一段时间了,现在终于到了注册的时候了。我在网站上找不到我的问题,所以我想我会自己问。我已经在下面复制了我的代码。 我这样做是为了学校的作业。它做了它应该做的一切(找到第二个最小的数字),但是,输出不是我想要的。我曾尝试将out.printf语句放在其他地方,但它就是不起作用。首先,前两个数字自动分配给smallestNumber和secondSmallestNumber,分配说明输入的第一个数字应始终小于第二个数字。然后它进入循环并比较所有数字。最后,它应该

我已经检查StackOverflow有一段时间了,现在终于到了注册的时候了。我在网站上找不到我的问题,所以我想我会自己问。我已经在下面复制了我的代码。 我这样做是为了学校的作业。它做了它应该做的一切(找到第二个最小的数字),但是,输出不是我想要的。我曾尝试将out.printf语句放在其他地方,但它就是不起作用。首先,前两个数字自动分配给smallestNumber和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.

要重复做某件事,您需要将其放入循环中。因此,要想不重复,就把它放在循环之外。

要重复做某事,就把它放在循环之内。因此,为了避免重复,请将其置于循环之外。

移出.printf(“%s%d\n”,“第二个最小的数字是:”,第二个最小的数字)在while循环之外。

移出.printf(“%s%d\n”,“第二个最小的数字是:”,第二个最小的数字)在while循环之外。

如其他人所述-您应该将打印移到循环之外。同样,在最后,你会喊出
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();
        }   
包模块2;
导入java.io.PrintStream;
导入java.util.Scanner;
公开课第二名{
打印流输出;
第二名(){
out=新的打印流(System.out);
}
void start(){
扫描仪输入=新扫描仪(系统输入);
out.printf(“%s”,“输入多个数字除以一个空格,然后用Enter:”)关闭;
int newNumber;
int smallestNumber=in.nextInt();
int secondSmallestNumber=in.nextInt();
while(在.hasNext()中){
newNumber=in.nextInt();
if(newNumber
正如其他人提到的那样-您应该将打印移到循环之外。最后您还可以呼喊
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();
        }   
包模块2;
导入java.io.PrintStream;
导入java.util.Scanner;
公开课第二名{
打印流输出;
第二名(){
out=新的打印流(System.out);
}
void start(){
扫描仪输入=新扫描仪(系统输入);
out.printf(“%s”,“输入多个数字除以一个空格,然后用Enter:”)关闭;
int newNumber;
int smallestNumber=in.nextInt();
int secondSmallestNumber=in.nextInt();
while(在.hasNext()中){
newNumber=in.nextInt();
if(newNumber
secondSmallestNumber
是在
循环之外定义的,而
循环意味着它不限于仅存在于循环中,这意味着您可以在循环之外(即循环之后)打印它的值这会给你预期的结果。它只会打印一次,因为它不会在循环中。我得到了3个相同的答案,虽然我知道你们都在说什么,但它不起作用。你能帮我进一步吗?
secondSmallestNumber
是在
之外定义的,而
循环意味着它不是bounded仅存在于循环中,这意味着您可以在循环之外(即循环之后)打印它的值这会给你预期的结果。它只会打印一次,因为它不会在循环中。我得到了3个相同的答案,虽然我理解你们所说的,但它不起作用。你能帮我进一步吗?问题是控制台什么都没有显示。问题是控制台什么都没有显示你能告诉我确切的位置吗?我试着把它放在几乎每一行上,大多数情况下,控制台在循环之外不提供任何反馈。你能告诉我确切的位置吗?我试着把它放在几乎每一行上,大多数情况下,控制台在循环之外不提供任何反馈谢谢!我会找到flush的功能。但它可以工作edthanks!我会查一查flush是干什么的。但它起作用了