【问题标题】:How to get the second word from Java Scanner input?如何从 Java Scanner 输入中获取第二个单词?
【发布时间】:2014-11-19 10:48:06
【问题描述】:

也许它只需要String 的方法,但我真的需要从收到的Scanner 输入中获取第二个单词的值,如下所示:

Scanner in = new Scanner(System.in);
String a;
a = in.nextLine();

【问题讨论】:

  • 使用a.split("\\s+");?
  • 如果您从命令行运行代码,您应该考虑使用传递给main() 的args 变量,而不是从标准输入读取。

标签: java string java.util.scanner


【解决方案1】:

假设您将“单词”定义为由空格分隔的部分,并且输入了两个单词:

Scanner in = new Scanner(System.in);
String a;
a = in.nextLine();
String secondWord = a.substring(a.indexOf(" "));

如果可能有更多,请使用拆分:

Scanner in = new Scanner(System.in);
String a;
a = in.nextLine();
String secondWord = a.split("\\s+")[1];

【讨论】:

    【解决方案2】:

    使用http://docs.oracle.com/javase/8/docs/api/java/lang/String.html#split-java.lang.String-

    像这样a.split(" "),结果将是大小为 2 的数组,其中第二个元素是 results.txt

    【讨论】:

      【解决方案3】:

      您可以使用scanner.next()。一个单元测试用例来演示:

      @Test
      public void testSecondWordSingleLine() {
          Scanner scanner = new Scanner("hello hi there");
          scanner.next();
          assertEquals("hi", scanner.next());
      }
      

      如果第二个单词在新行上也可以使用,例如:

      @Test
      public void testSecondWordMultiLine() {
          Scanner scanner = new Scanner("hello\nhi there");
          scanner.next();
          assertEquals("hi", scanner.next());
      }
      
      @Test
      public void testSecondWordMultiLineWithNextLineFirst() {
          Scanner scanner = new Scanner("hello\nhi there");
          scanner.nextLine();
          assertEquals("hi", scanner.next());
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-18
        • 2016-05-23
        • 1970-01-01
        • 2013-06-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-30
        相关资源
        最近更新 更多