我一直在尝试创建一种方法,该方法从具有3条记录(名称,年龄)的文本文件中读取
在我的课堂上,我包括吸气剂,setters compareTo和toString方法。
21岁的马克·道格
David Brough,19
马克伊甸园,17
我遇到的错误是:
Exception in thread "main" java.lang.NumberFormatException: For input string: " 28"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:569)
at java.lang.Integer.parseInt(Integer.java:615)
at lab7.People.readPersons(People.java:44)
at lab7.People.main(People.java:63)
该方法必须按年龄分割名称(已完成) 并打印arraylist
public static List<People> readPersons(String fileName) throws FileNotFoundException{
Scanner sc= new Scanner(new File(fileName));
List <People> persons= new ArrayList<>();
while (sc.hasNext()) {
String line = sc.nextLine();
String[] alo = line.split(",");
int age = Integer.parseInt(alo[1]);
String name = alo[0];
persons.add(new People(name, age));
}
return persons;
}
@Override
public String toString() {
return "name " +getName()+"age " +getAge();
}
public static void main(String[] args) throws FileNotFoundException {
System.out.println(readPersons("C:\\Users\\Mark \\Desktop\\CS\\JAVA\\exersice\\src\\Person\\data"));
我从“ data.txt”文件(与我的Person类位于同一包中)复制了目录 不幸的是,我遇到了一个我不知道为什么的错误。
答案 0 :(得分:0)
在转换为int之前,请这样整理您的电话号码:
int age = Integer.parseInt(alo[1].trim());
因为“ 28”上的多余空格导致数字格式异常。
答案 1 :(得分:0)
您只需要调整年龄值即可避免数字格式异常。
Java8允许您在一行中完成此操作:
String[] alo = Arrays.stream(line.split(",")).map(String::trim).toArray(String[]::new);
然后,您可以像在代码中一样获取名称和年龄。