Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尝试按空格拆分用户输入字符串_Java - Fatal编程技术网

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

Java 尝试按空格拆分用户输入字符串,java,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 ente

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

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

String sentence = sc.nextLine();

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

String sentence = sc.nextLine();

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

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

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

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

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

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

您可以使用空格正则表达式
str=“Hello Split me”;

String[]splited=str.split(\\s+)您可以使用空白正则表达式
str=“Hello Split me”;

String[]splited=str.split(\\s+)拆分工作正常。从控制台读取信息是正确的。下面的更改应该有效

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);
}
}}

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

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);
}
}}

但是nextLine的问题是,如果我们想接受两个输入,它会跳过第一个输入,然后接受第二个输入。这就是我现在面临的问题,如果我使用next,所以split不工作,如果我使用nextLine,所以它不接受第一个输入,但是nextLine的问题是,如果我们要接受两个输入,它会跳过第一个输入,接受第二个输入。这就是我现在面临的问题,如果我使用next所以split不工作,如果我使用nextLine所以它不接受第一个输入