2

我试图将一个字符串拆分为一个字符串数组,但是当它拆分字符串时,只有第一部分在拆分之前位于 [0] 插槽的数组中,但在 [1] 或更高版本中没有任何内容。这在尝试输出 spliced[1] 时也会返回 java 异常错误

import java.util.Scanner;

public class splittingString
{

    static String s;


    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);
        System.out.println("Enter the length and units with a space between them");
        s = input.next();
        String[] spliced = s.split("\\s+");
        System.out.println("You have entered " + spliced[0] + " in the units of" + spliced[1]);
    }

}
4

4 回答 4

11

你应该使用: -

input.nextLine()

目前,您正在使用 next 它将返回空格分隔

于 2013-02-21T17:00:52.260 回答
5

input.next()读取单个单词而不是整行(即将在第一个空格处停止)。要阅读整行,请使用input.nextLine().

于 2013-02-21T17:01:03.783 回答
3

假设您的输入是12 34s变量的内容是12,不是12 34。您应该使用Scanner.nextLine()阅读整行。

于 2013-02-21T17:01:33.473 回答
3

问题不在于split()函数调用。相反,问题在于您用于从控制台读取输入的功能。

next()只读取您键入的第一个单词(在遇到的第一个空格之后基本上不会读取)。

而是使用nextLine(). 它将读取整行(包括空格)。

这里更正的代码:

import java.util.Scanner;

public class StringSplit {

    static String s;

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out
                .println("Enter the length and units with a space between them");
        s = input.nextLine();
        String[] spliced = s.split("\\s+");
        System.out.println("You have entered " + spliced[0]
                + " in the units of" + spliced[1]);

    }

}
于 2013-02-21T17:01:44.340 回答