使用scanner读取csv内容

问题遇到的现象和发生背景

我有一个csv文件,里面的信息都是这样子排列的,一共19个:
xxxx xxx xxx,1234,123,xxx xxxxx
我尝试用scanner读出每一行的信息

try(Scanner scanner = new Scanner(myFile)){
            filmslist = new Movie[19];
            scanner.useDelimiter(",");
            while(scanner.hasNext()){
                for(int d = 0; d<19; d++) {
                    String name = scanner.next();
                    int year = scanner.nextInt();
                    int length = scanner.nextInt();
                    String director = scanner.next();
                    System.out.println(name + " " + year + " " + length + " " + director);
                    filmslist[d] = new Movie(name, year, length, director);
                }
            }
        } catch (IOException e){
            System.out.println("Error: " + e.getMessage());
        }

它显示到第二行内容就中断了,然后报错:

Enter a file name: catchfilm
xxxx xxx xxxxx 2000 107 xxx xxxxxxx
xxx xxxxx xxxx

> Task :Excution.main() FAILED
2 actionable tasks: 2 executed

Exception in thread "main" java.util.InputMismatchException
    at java.base/java.util.Scanner.throwFor(Scanner.java:939)
    at java.base/java.util.Scanner.next(Scanner.java:1594)
    at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
    at java.base/java.util.Scanner.nextInt(Scanner.java:2212)

怎么使用scanner正确打印这19行内容并且存为array对象呀?脑子快烧糊了


try(Scanner scanner = new Scanner(myFile)){
            filmslist = new Movie[19];
            while(scanner.hasNext()){
                for(int d = 0; d<19; d++) {
                    String line = scanner.nextLine();
        String arr[]=line.split(",");
        String name=arr[0];
        int year = Integer.valueOf(arr[1]);
        int length = Integer.valueOf(arr[2]);
        String director = arr[3];
        System.out.println(name + " " + year + " " + length + " " + director);
        filmslist[d] = new Movie(name, year, length, director);
                }
            }
        } catch (IOException e){
            System.out.println("Error: " + e.getMessage());
        }

你头两行数据发出来看一下

别用nextInt
直接nextline把整行读出来,再split分解,然后该转int的转int

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632