我的代码中的无限循环问题:我的程序似乎没有停止

时间:2015-06-12 22:30:07

标签: java

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

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

1 个答案:

答案 0 :(得分:1)

你的代码无论如何都不会做你需要的,因为它会跳过每一行。这样做:

    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。