我几乎没有使用分隔符的经验,我需要读取一个文本文件,该文件存储多个对象,其数据以逗号(",")分隔的单行存储.然后使用单独的字符串创建一个添加到arraylist的新对象.
Amadeus,Drama,160 Mins.,1984,14.83
As Good As It Gets,Drama,139 Mins.,1998,11.3
Batman,Action,126 Mins.,1989,10.15
Billy Elliot,Drama,111 Mins.,2001,10.23
Blade Runner,Science Fiction,117 Mins.,1982,11.98
Shadowlands,Drama,133 Mins.,1993,9.89
Shrek,Animation,93 Mins,2001,15.99
Snatch,Action,103 Mins,2001,20.67
The Lord of the Rings,Fantasy,178 Mins,2001,25.87
Run Code Online (Sandbox Code Playgroud)
我使用Scanner读取文件,但是我发现没有找到行错误,整个文件存储在一个字符串中:
Scanner read = new Scanner (new File("datafile.txt"));
read.useDelimiter(",");
String title, category, runningTime, year, price;
while (read.hasNext())
{
title = read.nextLine();
category = read.nextLine();
runningTime = read.nextLine();
year = read.nextLine();
price = read.nextLine();
System.out.println(title + " " + category + " " + runningTime + " " +
year + " " + price + "\n"); // just for debugging
}
read.close();
Run Code Online (Sandbox Code Playgroud)
小智 13
使用read.next()而不是read.nextLine()
title = read.next();
category = read.next();
runningTime = read.next();
year = read.next();
price = read.next();
Run Code Online (Sandbox Code Playgroud)
我想你想调用.next()它返回一个 String 而不是.nextLine(). 您的.nextLine()呼叫正在越过当前线路。
Scanner read = new Scanner (new File("datafile.txt"));
read.useDelimiter(",");
String title, category, runningTime, year, price;
while(read.hasNext())
{
title = read.next();
category = read.next();
runningTime = read.next();
year = read.next();
price = read.next();
System.out.println(title + " " + category + " " + runningTime + " " + year + " " + price + "\n"); //just for debugging
}
read.close();
Run Code Online (Sandbox Code Playgroud)
其中一个问题是:
while(read.hasNext())
{
title = read.nextLine();
category = read.nextLine();
runningTime = read.nextLine();
hasNext()
Run Code Online (Sandbox Code Playgroud)
如果此扫描器的输入中有另一个标记,则返回 true。不是整条线。您需要使用hasNextLine()
您执行了三次 nextLine() 。我认为你需要做的是,阅读该行并拆分该行。
| 归档时间: |
|
| 查看次数: |
72550 次 |
| 最近记录: |