在Java中将句子转换为数组

时间:2014-03-01 04:11:51

标签: java arrays string

如何将句子转换为数组?

我有这段代码:

Scanner scanner = new Scanner(System.in);

System.out.print("Enter your sentence: ");
String sentence = scanner.next();

String[] words = sentence.split(" ");

for (String word : words) {
    System.out.println(word);
}

但是......所有这一切只是打印出数组的第一个单词,就是这样。

4 个答案:

答案 0 :(得分:1)

next只是字面上消耗了下一个String。请改用nextLine

String sentence = scanner.nextLine();

原因:nextLine() advances the scanner越过换行符,这意味着它会捕获整行。

答案 1 :(得分:1)

Scanner.next()

只读取下一个标记 - 而不是下一行。你想要:Scanner.nextLine()

答案 2 :(得分:1)

我添加了一个调试语句,应该说明一个非常大的问题:

import java.util.Scanner;

public class SentenceToWords {

   public static void main(String[] args) {

      Scanner scanner = new Scanner(System.in);

      System.out.print("Enter your sentence: ");
      String sentence = scanner.next();

      //USEFUL INFORMATION!!!
      System.out.println("sentence=\"" + sentence + "\"");

      String[] words = sentence.split(" ");

      for (String word : words) {
          System.out.println(word);
      }
   }
}

输出:

[C:\java_code\]java SentenceToWords
Enter your sentence: setao uhesno uhoesuthesao uh
sentence="setao"
setao

正如@Makoto所说:当你想要读一行时,你只是在读一个单词。

答案 3 :(得分:1)

这种情况正在发生,因为您正在使用Scanner,如果您使用next(),它会忽略空格后的字符串。请改用nextLine()