-1

文字列を個別の変数に分割するのに助けが必要です。nextLine() を使用してユーザー入力を取得するプログラムを作成しようとしていますが、その文字列内の文字を区切る必要があります。

たとえば、ユーザーは 23plus または 2 3 plus という行を入力できます。

私は .split について読んだことがありますが、それは入力にスペースがある場合にのみ機能します。最初の数字は charAt(0) だと言えますが、どうすれば残りを取得できますか?

4

2 に答える 2

0

Stringchar ごとに char をループして、それが数字かどうかを確認するのはどうですか:

    final List<Integer> values = new LinkedList<>();
    final StringBuilder operator = new StringBuilder();
    for (final char c : input.toCharArray()) {
        if (Character.isDigit(c)) {
            values.add(Integer.parseInt(Character.toString(c)));
        } else if (!Character.isWhitespace(c)) {
            operator.append(c);
        }
    }

注:これは、入力が "WdigitWdigitWoperator" の形式である場合にのみ機能します。ここで、"W" はオプションの空白です。

しかし、あなたの質問からそれが事実であることは理解しています。

別のオプションは、正規表現を使用することです。これは次のようになります。

    final Pattern p = Pattern.compile("^\\s*+(?<firstDigit>\\d)\\s*+(?<secondDigit>\\d)\\s*+(?<operator>\\w++)$");

    final Matcher matcher = p.matcher(input);
    if(matcher.matches()) {
        System.out.println(matcher.group("firstDigit"));
        System.out.println(matcher.group("secondDigit"));
        System.out.println(matcher.group("operator"));
    }

ただし、これが宿題である場合 (私はそうだと思います)、これは受け入れられる解決策ではない可能性があります。

于 2013-04-01T21:55:22.603 に答える