[英]Can I use the enter key as a delimiter when using Scanner to read user input, but not "\n"?
我正在嘗試使用 Scanner 讀取用戶輸入並使用“輸入鍵”作為分隔符。 用戶將復制和粘貼任何文本,例如一篇文章將有多個“\\n”字符。 問題是,在第一段中斷之前,只能閱讀任何文章的第一段。 我想閱讀任何內容,直到用戶按下“輸入鍵”。 我希望有一種方法可以選擇“輸入鍵”,或者當我按下輸入鍵時將掃描儀解釋的值更改為唯一的值。
我不知道該嘗試什么。 它必須是結束讀取輸入的輸入鍵,而不是其他一些鍵,但我找不到任何方法來區分“輸入鍵”和輸入中的換行符。
這是我到目前為止:
public static String getInput()
{
Scanner reader = new Scanner(System.in);
reader.useDelimiter("\n");
String input = "";
boolean finished = false;
try {
input += reader.next();
}
catch (Exception e)
{
finished = true;
System.out.println(e);
}
return input;
}
不,這不是您可以使用Scanner
輕松完成的事情,甚至通常使用System.in
也無法做到。
System.in
僅在程序已通過您在 Java 程序周圍使用的任何軟件組裝成字符流時才能看到程序的輸入,以提供一個窗口,您可以在其中輸入內容並打印到其中。 到那時,很可能按下 Enter 鍵已經表示為\\n
字符,與表示粘貼文本中換行符的\\n
相同。 這不受 Java 程序的控制——它受與之通信的終端/控制台軟件的支配。
區分按鍵和粘貼文本的唯一可靠方法是明確使用窗口工具包,並讓您的 Java 程序顯示自己的窗口,該窗口直接與操作系統提供的鍵盤和剪貼板功能進行交互。
做得好是學習曲線上的一大步,如果您處於new Scanner(System.in)
是您處理輸入的new Scanner(System.in)
方式的階段,它可能對您所有人來說都更有效率所有這些都是為了將您的 UI 野心改變為更容易使用這些工具完成的事情。
給你,希望對你有幫助。
import java.util.*;
public class MyClass {
public static void main(String args[]) {
StringBuilder sb = new StringBuilder();
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
String line = sc.nextLine().trim();
if(!line.equalsIgnoreCase("end")){ //delimiter check
sb.append(line);
sb.append("\n");
}else
break;
}
System.out.println(sb.toString());
}
}
輸入:
Hello World!
This is para1.
This is para2.
輸出:
Hello World!
This is para1.
This is para2.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.