有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java:如何让我的代码通过两个不同的操作循环检查文件是否存在和文件是否不存在?

我的代码有一个问题,如果文件存在,循环可以正常工作,但是如果文件不存在,循环只会重复一次。我希望它能够工作,这样,如果用户输入一个文件名,并且该文件存在,它就会输出该文件的内容,然后询问一个新文件的名称。它应该一直这样做,直到用户输入转义词。如果文件不存在,它应该告诉他们该文件不存在,然后提示他们输入新文件名以查看是否存在。这将持续循环,直到输入转义词。一旦输入转义词,它将输出游戏结束消息

我需要在不使用方法的情况下完成这项工作,因为这是针对大学开始的java课程。我只有几周的编码经验,我完全无法让它正常工作。我的老师建议“使用if-else块使这两条路径相互排斥”,尽管我不太确定这意味着什么或如何实现它

有人能帮我修改代码来完成上述任务吗

相关代码:

              while (!filename.equals(escapeWord))
              {
                 System.out.print("\nWhere would you like to go?\n");
                 filename = keyboard.nextLine();

                 File file = new File(filename);
                 Scanner inputFile = new Scanner(file);

                 if (!file.exists())
                    {
                    System.out.println("You can't go that way!");
                    return;
                    }

                 while (inputFile.hasNext())
                 {
                    String fileRead = inputFile.nextLine();
                    System.out.println(fileRead);
                    dayCount += 1;
                 }

                 inputFile.close();
              }

              //End Game Message

              System.out.println("Congratulations, your adventure is over. " +
              "You spent " +dayCount + " days adventuring!");

共 (2) 个答案

  1. # 1 楼答案

    不太确定,但我认为引起问题的return声明;如果文件不存在,则返回调用方。去掉return,只说continue;所以,如果文件不存在,那么它将进入下一次迭代

                if (!file.exists())
                    {
                    System.out.println("You can't go that way!");
                    return; <  Here
                    }
    

    应该像

                if (!file.exists())
                    {
                    System.out.println("You can't go that way!");
                    continue;
                    }
    
  2. # 2 楼答案

    首先,我将把转义词的检查移动到循环中

    其次,对文件的检查会使您退出循环

              while (true)
              {
                 System.out.print("\nWhere would you like to go?\n");
                 filename = keyboard.nextLine();
    
                 if(filename.equals(escapeWord))
                 {
                    break;
                 }
    
                 File file = new File(filename);
    
                 if (!file.exists())
                 {
                    System.out.println("You can't go that way!");
                    continue;
                 }
    
                 Scanner inputFile = new Scanner(file);
    
                 while (inputFile.hasNext())
                 {
                    String fileRead = inputFile.nextLine();
                    System.out.println(fileRead);
                    dayCount += 1;
                 }
    
                 inputFile.close();
              }