文字列から文字列、int、および double を分割したい。文字列はテキスト ボックスに入力され、3 つすべてを含めることができます。(例: Hello 13 94 3,2 6.4 bye) それらを分割して合計したい。次に、それらをラベルに表示したいと思います。
したがって、ラベルは次のようになります。 String: Hello bye Int: 107 Double: 9,6
誰でも私を進行させることができますか?分割機能を使用することはできません。
まあ、分割がなければ、あなたが読んでいるものを一文字ずつ略奪して検出することができます。文字の場合は文字列、ドットまたはコンマの場合は double です。スペースを見つけるたびに、この検出をリセットします。必要なのはそれだけです。
よろしく
現在のロケールに従って小数点を指定する方法のみを許可する場合は、Scanner
この問題をエレガントに解決するために使用できます。
Scanner sc = new Scanner(inputString);
while (sc.hasNext()) {
if (sc.hasNextInt()) {
// It is an integer
sc.nextInt();
} else if (sc.hasNextDouble()) {
// It is a double
sc.nextDouble();
} else {
// Neither, so treat it as string
sc.next();
}
}
実際、Scanner
クラスを使用すると、 を構成するものにはるかに柔軟に対応できますdouble
。数値構文に関する Scanner クラスのドキュメントの文法を確認してください。
トークンはスペースで区切る必要があることに注意してください ( で定義\p{javaWhitespace}
)。別の区切り文字を定義することは可能ですが、あなたの場合、区切り文字を構成するものを明確に定義する必要があります。
,
と を.
同時に小数点として許可することは、実際にはあまり意味がありません。345,234
数が 10 万か数百かが明確でない例の 1 つです。Locale
ユーザーは、システムがオンになっている で適切な小数点記号と桁区切り記号を使用する必要があります。