簡體   English   中英

為什么我的boolean是無法訪問的代碼和編譯錯誤?

[英]Why my boolean is unreachable code and compilation error?

我正在為我的任務做一個休假管理系統。 這是我要求用戶保存注冊的部分。 首先,我使用 do...while(true) 循環來詢問他們的信息,例如姓名、ID、部門等。我首先在 do...while(true) 循環之前添加一個 boolean regErr = false 並且它有沒問題。

然后我繼續這部分並添加一個 boolean saveReg。 但我不知道為什么它會顯示錯誤並顯示其無法訪問的代碼。 如果我在 do...while 循環中添加 boolean saveReg 也不起作用。 我真的需要你的幫助來找出問題所在。 提前謝謝你,祝你有美好的一天!

// do...while loop for their name, ID, etc. where it is no problem //我只是寫在這里,以防你想看看

                   boolean regErr = false;

                   do{
                      regErr = false;

                      System.out.print("Name: ");
                      :
                      :

                   }while(true)

//這是有問題的部分

                    boolean saveReg;    //the boolean that is unreachable code
        
        do{
            String save = "";
            System.out.print("Save account?(Y/N):  ");
            save = sc.next();
        
            if(save.equals("Y") || save.equals("y")){
                saveReg = true;
                break;
            }
            else if(save.equals("N") || save.equals("n")){
                saveReg = false;
                break;
            }
            else{
                System.out.println("Invalid choice.");
            }
        }while(true);
    
    if(saveReg){
        try(PrintWriter regWriter = new PrintWriter("./empData/" + ".txt", "UTF-8")){
            regWriter.println(name);
            regWriter.println(empID);
            regWriter.println(password);
            regWriter.println(department);
            regWriter.println(position);
            regWriter.println(dateJoined);
            regWriter.println(userRole);
            regWriter.println(superiorID);
            
            System.out.println("Account saved.");
            regWriter.close();
            
            try(PrintWriter updateRegNo = new PrintWriter("./RegNo.txt", "UTF-8")){
                updateRegNo.println(++regNo);
                updateRegNo.close();
            }catch(IOException err){
                err.printStackTrace();
            }
        }catch(IOException err){
            err.printStackTrace();
        }
    }
    else{
        System.out.println("Registration fail.");
    }

那是因為你的第一個代碼, while(true)會讓它運行無限次,所以下面的代碼是無法訪問的。 使用下面的代碼 -

 boolean regErr = false;

 do{
     regErr = false;

     System.out.print("Name: ");
                  :
                  :

  }while(regErr )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM