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()

現在、次を使用しています。これにより、枯渇したスペースが返されます。

于 2013-02-21T17:00:52.260 に答える
5

input.next()行全体ではなく単一の単語を読み取ります(つまり、最初のスペースで停止します)。行全体を読み取るには、を使用しますinput.nextLine()

于 2013-02-21T17:01:03.783 に答える
3

入力がであると仮定すると、変数12 34の内容はではなく、です。行全体を読むために使用する必要があります。s1212 34Scanner.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 に答える