java - 扫描仪 hasNextLine() 无法访问 Java 中的最后一行

标签 java java.util.scanner inputstream treemap

我在Java中使用TreeMap结构。键中包含字符“:”,值是事物列表。问题是当我调试程序时停止在这一行(不再工作......)

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

我真的不知道问题出在哪里。下面是我的代码。 Data(我在其中保存日期变量)和 ListOfBills(在其中我保存 Bill 类的对象列表)是另外两个类。

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

    }

最佳答案

它一直处于阻塞状态,因为它正在等待输入...... 如果您从控制台进行测试,则需要在标准输入中输入一个值...

希望对你有帮助

关于java - 扫描仪 hasNextLine() 无法访问 Java 中的最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38934296/

相关文章:

java - 以编程方式用作背景时如何更改 ImageButton 可绘制颜色?

java - 用户输入长度的异常处理

java - 如何让扫描仪忽略特定模式之间的单词

java - 为什么我的 display() 方法没有打印出所有 ArrayList 元素?

base64 - 将 gtfs 实时数据流式传输为人类可读的格式

java - 为什么我的代码会产生错误?

java - Java 的 BufferedReader 和 InputStreamReader 类有什么区别?

java - JDBC 检测和 ORA-01000 : maximum open cursors exceeded

java - 如何使用参数 @link 编写 javadoc @deprecated 方法

java - Scanner#nextFloat 的奇怪行为