我有文本文件解析器。 和记录一样
1111史密斯罗伯特J 1900
正常工作,结果是
ID: 1111
LAST NAME: SMITH
FIRST NAME: ROBERT
MIDDLE NAME: J
MONEY: 1900
但如果中间名为空,则结果为
ID: 1111
LAST NAME: SMITH
FIRST NAME: ROBERT
MIDDLE NAME: 1900
MONEY: 1900
代码:
StringTokenizer st = new StringTokenizer(token);
Client client = new Client();
while(st.hasMoreElements()){
String token2 = st.nextElement().toString();
String[] array = new String[5];
int i = 0;
array[i++] = new String(token2);
String id = array[0];
String lastName = array[1];
String firstName = array[2];
String middleName = array[3];
String money = array[4];
client.add(id);
client.add(lastName);
client.add(firstName);
client.add(middleName);
client.add(money);
}
listResult.add(client);
我如何解决它?
答案 0 :(得分:1)
如果钱有特定的格式(就像在我们的情况下,它似乎是一个数字),那么你可以回溯:
顺便说一下,你的代码闻起来很糟糕:
String token2 = st.nextElement().toString();
String[] array = new String[4];
int i = 0;
array[i++] = new String(token2);
token2
已经是String
,无需致电new String(token2)
。int i = 0; array[i++]
=>将始终写相同的值。Arrays.fill(array, null)
重用数组(例如:将第2行放在循环之前),从而避免新的对象分配。setFirstName
,setLastName
等,而不要执行看起来像List
但不是List
的内容。< / LI>
醇>