2014-04-08 277 views
5
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(以逗號分隔)如何讀取在Java逗號分隔整數輸入

+0

逗號分隔整數==逗號分隔值== CSV ==使用OpenCSV?如果是玩具代碼,手工操作即可,但對於認真的工作,請考慮使用OpenCSV。 – fge

回答

5

可以使用nextLine方法讀取一個字符串,並使用該方法通過拆分逗號這樣的分離:

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個值的工作。

如果需要更改值的數量,可以使用循環從矢量中獲取值。

9

您可以對非數字項目使用分隔符,這會將任何非數字標記爲分隔符。

如:

dis.useDelimiter("\\D"); 

useDelimiter方法接受PatternPatternString表示。

完整例如:

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 

注意

  • 不要忘了你的closeScanner
  • 請參閱API瞭解Pattern的更多樂趣,以便定義您的輸入。