为什么我的arraylist不打印其值?

时间:2019-05-16 12:12:59

标签: java

我一直在尝试创建一种方法,该方法从具有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类位于同一包中)复制了目录 不幸的是,我遇到了一个我不知道为什么的错误。

2 个答案:

答案 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);

然后,您可以像在代码中一样获取名称和年龄。