文字列を個別の変数に分割するのに助けが必要です。nextLine() を使用してユーザー入力を取得するプログラムを作成しようとしていますが、その文字列内の文字を区切る必要があります。
たとえば、ユーザーは 23plus または 2 3 plus という行を入力できます。
私は .split について読んだことがありますが、それは入力にスペースがある場合にのみ機能します。最初の数字は charAt(0) だと言えますが、どうすれば残りを取得できますか?
String
char ごとに 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"));
}
ただし、これが宿題である場合 (私はそうだと思います)、これは受け入れられる解決策ではない可能性があります。