2

Scanner次のような文字列を読み取るためにa を使用しています。

"1.0, 1, 3.0, 4, 2.0, 6"

これは double で、その後に int などが続き、カンマで区切られています。

スキャナーをセットアップしました

Scanner in = new Scanner(string);

次に、次のように使用します。

newNode.coefficient = in.nextDouble();
newNode.exponent = in.nextInt();

コンマを含まない文字列の場合、正常に機能します。しかし、私の文字列には上記のようにコンマがあります。

カンマをスキップするにはどうすればよいですか?

文字列を分割したくないので (形式は同じでも文字列の長さは異なります)、そのことを説明しないでください。

4

2 に答える 2

2

カンマを受け入れるようにスキャナーの区切り文字を設定します。

Scanner input = new Scanner(System.in).useDelimiter(", ");

デフォルトの区切り文字は空白ですが、useDelimiter().

また、区切り文字は正規表現であるため、コンマの後のスペースもオプションにすることができます。

Scanner input = new Scanner(System.in).useDelimiter(", ?");
于 2016-04-13T03:47:35.773 に答える
0

スキャナのドキュメントから:

スキャナーは、空白以外の区切り文字も使用できます。この例では、文字列からいくつかの項目を読み取ります。

String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");
System.out.println(s.nextInt());
System.out.println(s.nextInt());
System.out.println(s.next());
System.out.println(s.next());
s.close();

コンマと空白の組み合わせを区切り文字として使用するようにスキャナーを設定するだけです。

in.useDelimiter("\\s*,\\s*");
于 2016-04-13T03:48:22.803 に答える