我有一个文本文件,我需要从中读取数据到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
janey 33 4567 33 F
philip 55 5456 44 M
现在,当名称是单个单词而中间没有任何空格时,代码可以正常工作。但是当名字像“jhon desuja”时它不起作用。怎么克服这个?
我需要将它存储在2d数组中。如何验证输入?如名称不应包含数字或年龄不应为负数或包含字母。任何帮助将受到高度赞赏。
答案 0 :(得分: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