web-dev-qa-db-ja.com

java)でコンマ区切りの整数入力を読み取る方法

import Java.io.*;
import Java.util.*;
class usingDelimiters
{
    public static void main(String args[])
    {
        Scanner dis=new Scanner(System.in);
        int a,b,c;
        a=dis.nextInt();
        b=dis.nextInt();
        c=dis.nextInt();
        System.out.println("a="+a);
        System.out.println("b="+b);
        System.out.println("c="+c);
    }
}

このプログラムは、入力が1 2 3(スペースで区切られている)の場合は正常に機能しますが、入力が1,2,3(コンマで区切られている)の場合にプログラムを変更する方法

6
user3126841

nextLineメソッドを使用して文字列を読み取り、メソッドsplitを使用して次のようにコンマで区切ることができます。

public static void main(String args[])
    {
        Scanner dis=new Scanner(System.in);
        int a,b,c;
        String line;
        String[] lineVector;

        line = dis.nextLine(); //read 1,2,3

        //separate all values by comma
        lineVector = line.split(",");

        //parsing the values to Integer
        a=Integer.parseInt(lineVector[0]);
        b=Integer.parseInt(lineVector[1]);
        c=Integer.parseInt(lineVector[2]);

        System.out.println("a="+a);
        System.out.println("b="+b);
        System.out.println("c="+c);
    }

このメソッドは、コンマで区切られた3つの値でのみ機能します。

値の量を変更する必要がある場合は、ループを使用してベクトルから値を取得できます。

数値以外の項目には区切り文字を使用できます。これにより、数字以外の項目が区切り文字としてマークされます。

といった:

dis.useDelimiter("\\D");

useDelimiterメソッドは、PatternまたはStringPattern表現を取ります。

完全な例:

Scanner dis=new Scanner(System.in);
dis.useDelimiter("\\D");
int a,b,c;
a=dis.nextInt();
b=dis.nextInt();
c=dis.nextInt();
System.out.println(a + " " + b + " " + c);
dis.close();

入力(または)

  • 1,2,3
  • 1 2 3

出力

1 2 3

  • closeあなたのScannerを忘れないでください!
  • 入力を区切る追加の楽しみについては、Patternsの [〜#〜] api [〜#〜] を参照してください。
14
Mena