2014-04-08 14 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); 
    } 
} 

Questo programma funziona bene quando il mio ingresso è 1 2 3 (separate da spazi) Ma, come modificare il programma quando il mio ingresso è 1,2,3 (separati da virgole)Come leggere separati da virgola ingressi interi java

+0

interi separati da virgola == valori separati da virgola == CSV == utilizzare OpenCSV? A mano va bene se è un codice giocattolo, ma per un lavoro serio, considera l'utilizzo di OpenCSV. – fge

risposta

5

è possibile utilizzare il metodo nextLine per leggere una stringa e utilizzare il metodo diviso per separare da una virgola in questo modo:

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); 
    } 

Questo metodo sarà il lavoro con i 3 valori separati da solo virgola.

Se è necessario modificare la quantità di valori, è possibile utilizzare un ciclo per ottenere i valori dal vettore.

9

È possibile utilizzare un delimitatore per elementi non numerici, che contrassegna qualsiasi carattere non numerico come delimitatore.

Come:

dis.useDelimiter("\\D"); 

Procedimento useDelimiter prende una o l'String rappresentazione Pattern di un Pattern.

esempio completa:

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(); 

ingressi (uno o)

  • 1,2,3
  • 1 2 3

uscita

1 2 3 

Nota

  • Non dimenticare di close tua Scanner!
  • Vedere API per Pattern s per ulteriore divertimento che delimita l'input.
Problemi correlati