2016-11-28 5 views
0

Ich habe eine Textdatei und ich muss Daten daraus in ein 2D-Array lesen. Die Datei enthält Zeichenfolge sowie Zahlen.Daten aus der Textdatei lesen und validieren

String[][] arr = new String[3][5];  
BufferedReader br = new BufferedReader(new FileReader("C:/Users/kp/Desktop/sample.txt"));  
String line = " ";  
String [] temp; 
    int i = 0; 
    while ((line = br.readLine())!= null){ 
     temp = line.split(" "); 
     for (int j = 0; j<arr[i].length; j++) {  
      arr[i][j] = (temp[j]); 
     } 
     i++; 
    } 

Beispieltextdatei ist: Name Alter Gehalt ID gender
jhon 45 4900 22 M
janey 33 4567 33 F
Philipps 55 5456 44 M

jetzt, wenn der Name a ist einzelnes Wort ohne Leerzeichen dazwischen, funktioniert der Code. aber es funktioniert nicht, wenn der Name "jhon desuja" ist. Wie man das überwindet?

Ich muss es in einem 2d-Array speichern. Wie validiere ich die Eingabe? wie Name sollte keine Zahlen enthalten oder Alter sollte nicht negativ sein oder Buchstaben enthalten. Jede Hilfe wird sehr geschätzt.

+0

@CherubimAnand Von zurückkehren würde, wo sieht dies wie eine C++ Frage an Sie? – px06

+0

Ich wollte nur auf das OP hinweisen, um eine Sprache zu integrieren ... Ich hatte gerade C++ zum Beispiel .. Ich habe den Code @ px06 nicht scharf beobachtet :) – Cherubim

Antwort

2

Regular Expression könnte eine bessere Optionen:

Pattern p =  Pattern.compile("(.+) (\\d+) (\\d+) (\\d+) ([MF])"); 
String[] test = new String[]{"jhon 45 4900 22 M","janey 33 4567 33 F","philip 55 5456 44 M","john mayer 56 4567 45 M"}; 
for(String line : test){ 
    Matcher m = p.matcher(line); 
    if(m.find()) 
    System.out.println(m.group(1) +", " +m.group(2) +", "+m.group(3) +", " + m.group(4) +", " + m.group(5)); 
} 

die

jhon, 45, 4900, 22, M 
janey, 33, 4567, 33, F 
philip, 55, 5456, 44, M 
john mayer, 56, 4567, 45, M 
Verwandte Themen