【问题标题】:Text with "return" in it - Java scanner input带有“return”的文本 - Java 扫描仪输入
【发布时间】:2014-02-25 22:09:23
【问题描述】:

这是我的代码:

Scanner scan = new Scanner(System.in);
String speed_string = scan.nextLine(); 
String[] string_array = speed_string.split("\\s");

我希望我的代码能够处理换行符,例如将两个或多个段落复制粘贴到单个 nextLine 中。那可能吗?就目前而言,它将接受任何输入,直到换行。

【问题讨论】:

  • 您需要更清楚您希望程序的行为方式。如果您希望它输入多行,首先您必须决定您希望用户在没有更多输入时如何告诉您。然后您可以在循环中使用nextLine,并使用字符串连接来添加换行符并将字符串添加在一起。
  • 然后实现你自己的Reader。

标签: java input newline


【解决方案1】:

根据 API 状态,它将在换行处停止:

由于此方法继续在输入中搜索 行分隔符,它可以缓冲所有搜索该行的输入 如果没有行分隔符则跳过

所以不,你不能粘贴一个大块并期望它立即接受它。

See nextLine method

【讨论】:

  • 你知道输入大块的方法吗?使用其他方法。
  • @user1614466 Scanner 和文件输入法将一次读取一行,因此唯一的方法是将nextLine() 放入循环中。一些操作系统会让你粘贴一个大块,它们会表现得好像你已经输入了多行,但用户仍然需要做一些特别的事情来告诉它没有更多了。要真正允许剪切和粘贴输入大块,您几乎需要一个 GUI。
【解决方案2】:

你无法改变nextLine() 返回一行的事实。这就是它的全部目的。不过,您可以读取两行并将这两个字符串组合起来。当然,这意味着对文件格式有一定的了解。

【讨论】:

    【解决方案3】:

    使用 Scanner 类不可能做到这一点,因为它只能读取由“输入”或换行符确认的行。 但是您也可以使用 ArrayUtils 处理连接两行。

    Scanner scan = new Scanner(System.in);
    String speed_string = scan.nextLine(); 
    String speed_string1 = scan.nextLine();
    String[] string_array = speed_string.split("\\s");
    String[] string_array1 = speed_string.split("\\s");
    String[] both = ArrayUtils.addAll(string_array , string_array1 );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-23
      • 1970-01-01
      • 2018-05-30
      • 1970-01-01
      • 2017-09-04
      • 2021-01-14
      相关资源
      最近更新 更多