尝试按空格分隔用户输入字符串

时间:2018-11-27 12:58:09

标签: java

试图拆分字符串并输出用户输入的倒数第二个单词,但是.split()似乎只是将单个字符串输出到数组中,因此它不起作用?

import java.util.*;

public class Random_Exercises_no60 {

    public static void main(String[] args) {  
        Scanner sc = new Scanner (System.in);
        System.out.println("Please enter a sentence.");
        String sentence = sc.next();
        String[] words = sentence.split("\\s+");
        System.out.println(words.length); // Just to check the array
        System.out.println("Penultimate word " + words[words.length - 2]);
    }
}

4 个答案:

答案 0 :(得分:4)

问题不是split方法的问题,而是应该使用nextLine而不是next

String sentence = sc.nextLine();

答案 1 :(得分:0)

@Aomine的回答应该可以解决您的问题。如果您真的想直接使用Scanner#next(),那么也可以尝试将扫描仪的分隔符设置为换行符:

Scanner sc = new Scanner (System.in);
sc.useDelimiter(Pattern.compile("\\r?\\n"));

然后,调用Scanner#next()应该默认返回下一行。

答案 2 :(得分:0)

您可以使用空格正则表达式

str = "Hello spilt me";
String[] splited = str.split("\\s+");

答案 3 :(得分:0)

该拆分工作正常。从控制台读取信息是正确的。下面的更改应该起作用。

public class Random_Exercises_no60 {

public static void main(String[] args) {  
    Scanner sc = new Scanner (System.in);
    System.out.println("Please enter a sentence.");
    String sentence = sc.nextLine();
    String[] words = sentence.split("\\s+");

    System.out.println(words.length); // Just to check the array
    for (String currentWord : words ) {
    System.out.println("The current word is" + currentWord);
}
}}