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