我有一个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