7

区切り文字を使用した経験がほとんどなく、データがコンマ (",") で区切られた 1 行に格納されている複数のオブジェクトを格納するテキスト ファイルを読み取る必要があります。次に、個別の文字列を使用して、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

Scanner を使用してファイルを読み取っていますが、行が見つからないというエラーが発生し、ファイル全体が 1 つの文字列に格納されます。

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();
4

6 に答える 6

12

read.nextLine() の代わりに read.next() を使用する

   title = read.next();
   category = read.next();
   runningTime = read.next();
   year = read.next();
   price = read.next();
于 2013-01-09T17:36:49.500 に答える
4

.next()の代わりに String を返す whichを呼び出したいと思います.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();
于 2013-01-09T17:39:39.713 に答える
2

next(); 使用している場所を使用する必要がありますnextLine();

チュートリアルをご覧ください: http://docs.oracle.com/javase/tutorial/essential/io/scanning.html

次の行に注意してください。

try {
   s = new Scanner(new BufferedReader(new FileReader("xanadu.txt")));

   while (s.hasNext()) {
   System.out.println(s.next());
}
于 2013-01-09T17:35:21.253 に答える
1

String.split() 関数を使用して文字列を文字列の配列に変換し、値に対してそれぞれを反復処理することもできます。

コンマ区切りの文字列をArrayListに変換する方法は? 詳細については、これを参照してください。

于 2013-01-09T17:33:53.293 に答える
0

1つの問題は次のとおりです。

while(read.hasNext())
   {
       title = read.nextLine();
       category = read.nextLine();
       runningTime = read.nextLine();

hasNext()

このスキャナーの入力に別のトークンがある場合はtrueを返します。行全体ではありません。hasNextLine()を使用する必要があります

nextLine()を3回実行しています。私はあなたがする必要があるのは、行を読んで行を分割することだと思います。

于 2013-01-09T17:30:56.580 に答える