簡體   English   中英

使用 Scanner 讀取用戶輸入時是否可以使用 enter 鍵作為分隔符,但不能使用“\\n”?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM