0

次のようにフォーマットされた.txtファイルがあります

The Shawshank Redemption 
100 
19.95 
DVD 

さらに多くの行がありますが、これらの値を4つの異なるArrayListに格納しようとしています。問題は、エラーjava.util.InputMismatchExceptionを取得することです。これが私のコードです:

while(list.hasNext() && !list.nextLine().equals("")){
                titleList.add(list.nextLine());
                quantityList.add(list.nextInt());       
                priceList.add(list.nextDouble());
                typeList.add(list.nextLine());          
            }

プログラムはquantityList.add(list.nextInt());でクラッシュします。次の行はintではなくintであると私に言って、そのエラーを私に与えます。nextLine()を使用すると、それを読み取ります。誰かが私に与えることができるどんなヒントも非常に役に立ちます。

4

1 に答える 1

2

while 文の最初の行はすでに読んでいます: -

while(list.hasNext() && !list.nextLine().equals(""))

そして、もう一度nextLine最初に呼び出すと、実際には整数 (100) を読み取っているlist.nextLineため、その例外が発生します。おそらく現在、 を に格納しStringているからInteger Listです。からその2番目のテストを削除するだけwhileです。

2 番目の問題は、一度だけチェックlist.hasNext()した後、 を読んでいるということ4 inputsです。入力がなくなると、再び例外がスローされる可能性があります。ですから、それにも気を配る必要があります。

もう 1 つの問題は、 と の使用によるものlist.nextInt()ですlist.nextDouble()。これらのメソッドはnewline、最後の文字まで入力を読み取ることに注意してください。methodしたがって、読み取り後に残された改行文字は、消費されない場合、次の読み取り入力の呼び出しによって読み取られます。したがって、これらのメソッドの両方の後に空のlist.next()呼び出しを追加して を消費する必要newlinenewlineあります。list.nextDouble()list.nextInt()


これらの問題とは別に、4 つの異なるリストを作成するのではなく、Classこれらの属性を格納するを作成し、そのクラスのオブジェクトを作成することをお勧めします。List

于 2013-01-24T20:29:57.940 に答える