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(コンマで区切られている)の場合にプログラムを変更する方法
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
またはString
のPattern
表現を取ります。
完全な例:
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
を忘れないでください!Pattern
sの [〜#〜] api [〜#〜] を参照してください。