【发布时间】:2014-09-18 06:01:39
【问题描述】:
我的代码从一行中提取每个单词,并用空格将它们分隔成标记。如果或多或少会打印错误,则每行上应该只有 6 类标记。问题是当狗的名字之间有空格时,比如德国牧羊犬。我的代码将其视为错误。 如果 Dog 名称为 German Shepard,我希望我的代码将其视为一个标记,例如“German Shepard”。
ArrayList<Dog> dogs = new ArrayList<Dog>();
int numLine= 0;
while(sc.hasNextLine())
{
// read a line from the input file via sc into line
line = sc.nextLine();
numLine++;
String[] fields =line.split("\\s+");
if(fields.length != 6)
{
System.out.println(line);
System.out.println("ERROR ON LINE #"+numLine+
":number of fields on line must be 6, not "+ fields.length);
System.out.println();
}
// got from Dr. Koch email infromation
try{
StringTokenizer stk = new StringTokenizer(line);
String name = stk.nextToken();
String breed = stk.nextToken();
int month = Integer.parseInt(stk.nextToken());
int day = Integer.parseInt(stk.nextToken());
int year = Integer.parseInt(stk.nextToken());
double weight = Double.parseDouble(stk.nextToken());
Dog list = new Dog(name, breed, month, day, year, weight);
dogs.add(list);
}
catch(Exception missError)
{
}
}
// close the file
sc.close();
【问题讨论】:
-
您正在对 ' ' 进行拆分,仅使用 ' ' 分隔数据是个坏主意,您应该使用 '|'或';'。
标签: java arraylist split token