我试图打印与用户粘贴到控制台中相同的字符串。 我的代码如下所示:
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键时可以打破循环吗?
答案 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);
}
}
您甚至可以使用退出等自定义消息。