2016-03-23 115 views
0

我想從文本處理器或其他輸入複製的文本。 使用nextLine()只是介紹了第一行,它也不允許我使用StringBuffer。我還沒有找到任何解決我的問題。如何使用命令控制檯在java中輸入文本?

這是我的代碼:

public static void main (String args[]) { 
    Scanner keyboard= new Scanner(System.in); 
    StringBuffer lines= new StringBuffer(); 
    String line; 

    System.out.println("texto:"); 
    line= keyboard.nextLine(); 
    //lines= keyboard.nextLine(); //this doesn´t work 
    System.out.println(lines); 
} 

這裏是我想要做什麼的例子:

我從一個文本文件複製這樣的文字:

ksjhbgkkg

sjdjjnsfj

sdfjfjjjk

然後,我把它粘貼在cmd上(我用Geany)。 我希望能夠得到一個StringBuffer或類似的(東西我可以操縱)是這樣的:

StringBuffer x = "ksjhbgkkgsjdjjnsfjsdfjfjjjk"

謝謝!

+0

如何將讀取行添加到StringBuffer?如何閱讀不只一行(因爲你的例子中有三個)? – Tom

+0

爲什麼不使用java.util.Scanner? – Laurel

+0

@Laurel'掃描儀鍵盤=新掃描儀(System.in);'......對現有代碼行有什麼看法? – Tom

回答

0

嘗試使用類似:

while(keyboard.hasNextLine()) { 
    line = keyboard.nextLine(); 
} 

然後,您可以保存這些行。 (例如數組/ ArrayList)。

0

可以追加keyboard.nextLine()到您的StringBuffer像這樣:

lines.append(keyboard.nextLine()); 

的StringBuffer將接受一個String要追加所以這應該適合你的目的。

while (keyboard.hasNextLine()) { 
     lines.append(keyboard.nextLine()); 
} 
0

@Cache Staheli有正確的方法:

由@Cache表示這會看到這樣的你可以用while循環使用。要詳細說明如何將鍵盤輸入放入您的StringBuffer,請考慮以下內容:

public static void main(String[] args) { 
    Scanner keyboard = new Scanner(System.in); 
    StringBuffer lines= new StringBuffer(); 
    String line; 

    System.out.println("texto:");  

    while(keyboard.hasNextLine()) { // while there are more lines to read 
     line = keyboard.nextLine(); // read the next line 
     if(line.equals("")) {  // if the user entered nothing (i.e. just pressed Enter) 
      break;     // break out of the input loop 
     } 

     lines.append(line);   // otherwise append the line to the StringBuffer 
    } 

    System.out.println(lines);  // print the lines that were entered 
    keyboard.close();    // and close the Scanner 
} 
+0

我試過你的代碼,它讓我引入新行,但我不能走出WHILE ......所以我從來沒有達到System.out.println(行)。我試圖添加一個條件,如:while(keyboard.hasNextLine()&& keyboard.nextLine!=「0」),但它沒有工作...(我是一個begginer所以,也許不應該按Enter?)感謝您以前的回答! – Mercedes

+0

這是因爲輸入流'System.in'從來沒有關閉,除非你自己關閉它(如果你保持Ctrl + D,你可以在Windows上執行此操作)。對於此程序的目的,您可能希望使用特定的條目來指示輸入的結尾。例如,您可能希望這樣做,以便如果用戶按Enter鍵,則結束該程序。請參閱我的編輯答案的示例,並注意Scanner.nextLine()方法將消耗輸入中的新行,因此我們要檢測空字符串「」而不是新行字符「\ n」。 – Matt

相關問題