试图拆分字符串并输出用户输入的倒数第二个单词,但是.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]);
}
}
答案 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);
}
}}