2011-05-29 132 views
0

我有一个InputStream(东东是什么用户键入到CONSOL,System.in.read();)只读第一个输入流?

现在我想以后把这个InputStream的成字符串时,它看起来就像这样:

InputStream input = System.in; 


    StringBuffer out = new StringBuffer(); 
    byte[] b = new byte[4096]; 
    for (int n; (n = input.read(b)) != -1;) { 
     out.append(new String(b, 0, n)); 
    } 

    System.out.println(out); 

我知道有很多更好的方法。但我想完成这一个。唯一的问题是!= -1,它永远不会发生。什么是输入的int?所以我为了结局。

Thx!

+0

在此作业中是否允许使用'Scanner'或'BufferedReader'? – BalusC 2011-05-29 22:12:42

+0

是的。我尝试了缓冲式阅读器,但同样的问题。我可以说readLine(),但它永远不会结束... – Lillipo 2011-05-29 22:19:48

回答

0

通常[CONTROL] + [d]将结束输入您的应用程序,它应该返回你-1的方法调用。根据操作系统的不同,您可能需要再次尝试[ENTER],然后按[CONTROL] + [D]和[ENTER]。

+0

是的,就是这样!我只需要CONTROL + D并结束(-1) – Lillipo 2011-05-30 06:52:31

0

它应该是取决于操作系统的10或13个值之一。

+0

不工作:/我使用Linux的x64 – Lillipo 2011-05-29 22:20:11

+0

根据[这aritcle](http://www.velocityreviews.com/forums/t146788-how-do-i -detect-if-the-user-has-press-the-enter-key.html)你无法正确识别 – Ali1S232 2011-05-29 22:28:04

2

这是关于标准的方式来做到这一点

Scanner scan = new Scanner(System.in); 
String line = scan.nextLine(); 
+0

我知道但我想用字符串作为输入流,后来我想读这个输入流并且把它当作一个字符串... – Lillipo 2011-05-29 22:40:13