Java无尽的扫描仪循环

时间:2014-06-09 14:50:48

标签: java loops while-loop java.util.scanner

我试图打印与用户粘贴到控制台中相同的字符串。 我的代码如下所示:

import java.util.Scanner;

public class reader {
    public static void main(String[ ] args)  
    {   
        Scanner scan = new Scanner( System.in );
        StringBuffer buf = new StringBuffer();
        while ( scan.hasNextLine() ) {
            buf.append( scan.nextLine() );
            buf.append( "\n" );
        }

        String s = buf.toString();
        System.out.print(s);
    }
}

问题(我认为)是循环是无穷无尽的,即使用户只在控制台中粘贴4行也不会破坏while循环。

我想要的是“System.out.print(s);”打印s。我该怎么办?用户按Enter键时可以打破循环吗?

3 个答案:

答案 0 :(得分:0)

您的代码无效,因为扫描程序会等待输入。而是检查输入是否为空(用户按Enter键)并退出循环:

String line;

while (!(line = scan.nextLine()).equals("")) {
    buf.append(line);
    buf.append("\n");
}

这将持续到用户提供空白行。

答案 1 :(得分:0)

您必须在指定的用户输入后断开循环,例如。 X Enter。你的循环永远不会被itsetf破坏,因为Scanner将尝试从标准输入读取。

答案 2 :(得分:0)

你可以在输入两次后结束它。 代码看起来像:

包公用事业; import java.util.Scanner;

公共班级读者{

public static void main(String[ ] args)  
{ 

Scanner scan = new Scanner( System.in );
StringBuffer buf = new StringBuffer();
while ( scan.hasNextLine() ) {
    System.out.println("<<");
    String line = scan.nextLine();
    buf.append( line );
    buf.append( "\n" );
    System.out.println(line);
    if(line.equals(""))
        break;

}
String s = buf.toString();
System.out.print(s);
}
}

您甚至可以使用退出等自定义消息。