2016-11-28 4 views
0

У меня есть текстовый файл, и мне нужно прочитать данные из него в 2D-массив. файл содержит строку, а также числа.чтение данных из текстового файла и проверка его

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 M
Джейни 33 4567 33 F
Филипа 55 5456 44 M

теперь, когда имя является одно слово без пробела между ними, код работает. но это не работает, когда имя похоже на «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 
Смежные вопросы