2016-11-28 90 views
0

我有一個文本文件,我需要從它讀取數據到二維數組。該文件包含字符串以及數字。從文本文件讀取數據並驗證它

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

示例文本文件是: 名年齡薪水ID性別
JHON 45 4900 22男
詹尼33 4567 33女性
菲利普55 5456 44男

現在,當名稱是單詞之間沒有任何空格,代碼起作用。但名稱與「jhon desuja」相似時不起作用。如何克服這一點?我需要將它存儲在2d數組中。如何驗證輸入?喜歡的名字不應該包含數字或年齡不應該是負面的或包含字母。任何幫助將不勝感激。

+0

@CherubimAnand從哪裏這看起來像一個C++問題嗎? – px06

+0

我只是想指出OP包含一種語言......我剛剛把C++放在了一個例子中......我沒有敏銳地觀察代碼@ px06 :) – Cherubim

回答

2

正則表達式可能是一個更好的選擇:

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

這將返回

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