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

Java 代码中的无限循环问题:我的程序似乎没有停止,java,Java,/*我有一个包含以下数据的文件: 旧金山:19887.32 芝加哥:未收到报告 纽约:298734.12 洛杉矶:未收到任何报告 我只想打印城市 这是我的代码,但似乎它不会停止!*/ public static void main(String[] args) { try (BufferedReader br = new BufferedReader(new FileReader("sales.dat"))) { String line; char

/*我有一个包含以下数据的文件: 旧金山: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();
     }
    }

你的代码不会做你所需要的,因为它会跳过每第二行。改为这样做:

    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。

它可能由于某种原因挂在内部循环上。你有没有在代码中看到过内部行为?@Canadancoder我扩展了我的答案来解释无限循环的原因:-)如果你有一个新问题,那就创建一个新问题。不要编辑您现有的问题,否则当前的答案将变得毫无意义。谢谢,它起到了作用,但我不明白为什么它会跳过我代码中的每两行?因为您正在阅读一行,然后您正在阅读来自同一输入的字符。所以这行(已经有“:”)将丢失。@KhatabBouchra正如Tom所说,创建一个新的。它是免费的:-)(不过你也要学习使用调试器,你会学到更多)比如我可以为java使用什么样的调试器?我想eclipse有一个调试器,但我想我必须学习如何使用调试器。谢谢你的帮助和提示,我很感激it@KhatabBouchra我使用netbeans,但我确信eclipse也有一个调试器。看看菜单。。。或者在youtube上搜索教程(youtube上不仅仅有可爱的猫视频!)。我在youtube上输入了“EclipseDebugger”,发现了很多点击率。祝你好运