2016-08-13 2 views
1

JavaでTreeMap構造体を使用しています。キーには文字 ':'が含まれ、値は物のリストです。問題は、私がプログラムをこの行で停止してデバッグするときです(もう動作しません...)スキャナhasNextLine()はJavaの最後の行にアクセスしません

if (!string.isEmpty()) { 
    **string = jin.nextLine();** 
} 

私は本当に何が問題になるのか分かりません。以下は私のコードです。データ(私は日付変数を保持する)とListOfBills(私はビルクラスのオブジェクトのリストを保持する)は2つの他のクラスです。

public void read(InputStream in) throws ParseException { 
     Scanner jin = new Scanner(in); 
     TreeMap<Date, ListOfBills> tree = new TreeMap<Date, ListOfBills>(); 
     ListOfBills obBill = new ListOfBills(); 
     Data data; 
     String string = jin.nextLine(); 
     while (jin.hasNextLine()) { 
      if (string.contains(":")) { 
       data = new Data((string)); 
       string = jin.nextLine(); 
       while (!string.contains(":")) { 
        String[] parts1 = string.split(" "); 
        obBill.listOfBills.add(new Bill(Integer.parseInt(parts1[0]), Float.parseFloat(parts1[2]), 
          parts1[3], Float.parseFloat(parts1[5])));     
        if (!string.isEmpty()) { 
         string = jin.nextLine(); 

        } 
       } 
       tree.put(data.date1, obBill); 

      } 

     } 
     for (Date date : tree.keySet()) { 
      System.out.println(date + "\n"); 
     } 
     jin.close(); 

    } 
+0

お役に立てば幸いです...あなたは、コンソールから、あなたのテストの場合は、あなたの標準入力に値を入力する必要が ...それが入力を待っているので、ブロックされ続けます'string = jin.nextLine(); 'を呼び出すたびに' jin.hasNextLine() 'をテストするとエラーが発生しやすくなります。 –

+0

'if(string.contains(": "))'がfalseの場合は、無限ループに入ります。 –

答えて

0

それは

が、それはあなたではない

+0

私は、 'END'のような単純な文字列を追加することでそれを試みましたが、それはクラッシュしていて、新しい空の行を追加して終わりまで行くが、この行でクラッシュする:while(jin.hasNextLine() ){...} – Merian

+0

あなたはテストしていた入力を提供できますか? –

関連する問題