java - 我的代码 : my programm seems not stopping 中的无限循环问题

标签 java

/* 我有这个包含这些数据的文件: 旧金山:19887.32
芝加哥:未收到报告
纽约:298734.12
洛杉矶:未收到报告
我只想打印城市
这是我的代码,但似乎没有停止!*/

  public static void main(String[] args) {

    try (BufferedReader br = new BufferedReader(new FileReader("sales.dat"))) {

        String line;
        char c;
        while ((line = br.readLine()) != null) {

            do{
                c =(char) br.read();
                System.out.print(c);
            }while(c != ':');
            System.out.println();

        }


    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
     }
    }

最佳答案

您的代码无论如何都不会执行您需要的操作,因为它会跳过每 2 行。改为这样做:

    try (BufferedReader br = new BufferedReader(new FileReader("sales.dat"))) {

        String line;
        while ((line = br.readLine()) != null) {
            int i = line.indexOf(':');
            if (i != -1)
                System.out.println (line.substring(0, i));
        }
    }

关于无限循环:它这样做是因为 read() 在文件末尾时将返回 -1。

关于java - 我的代码 : my programm seems not stopping 中的无限循环问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30813075/

相关文章:

java - 如何在eclipse java中从数据资源加载图像

java - 如何将图库中选定的图像塑造为圆形

java - opencsv导入无法解决

java - 如何在不使用 "internal"子包中的类的情况下包装到 Nashorn 中的 NativeArray

java - Spring 集成 dsl : http outbound gateway

java - 使用 Java 与 TLS 加密的 CUPS 打印服务器通信

java - 如何让 substring() 读取字符串直到某个字符?

java - 如何以编程方式检测 Tomcat webapp 中已使用的端口?

java - Socket.io 连接不适用于多个 fragment

java - 如何在 JVM 中强制/重现 Full GC?