有 Java 编程相关的问题?

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

java使用while或do-while循环从用户输入创建文件夹

在Java中使用while,do-while循环创建多个文件夹时遇到问题。我试着创建文件,我没有问题,但文件夹,不同的故事。 我用的是扫描仪和BufferedReader。问题是,它的行为真的很古怪。 如果我输入至少3个文件夹名,它通常只创建第一个,或者跳过第二个,创建第一个和第三个。最后,它不会接受我的“退出”作为我的结束点,它只会创建名为“退出”的文件夹,并等待更多的输入。 我已经在谷歌上搜索过了,但没有找到任何对我有帮助的东西。下面是代码(case AddShelf):`包库

public class Administrator {

    public static String help_msg = "[ Main Menu ]\r\n\r\nAddBook\r\nRemoveBook\r\nBookInfo\r\nAddShelf\nRemoveShelf\r\nShelfInfo";
    private static final DateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");

    public static void main(String[] args)throws IOException {
                        Date date = new Date();
                        System.out.println(sdf.format(date));
                System.out.println("Welcome to my book library\r\n\r\n"+"ADMINISTRATOR\r\n\r\n"+help_msg+"\r\n");

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String operate = br.readLine();

    do {
        switch(operate) {
        case"AddBook":
            //chose shelf,add new book  
        case"RemoveBook":
            //chose shelf,remove book
        case"BookInfo":
            //chose shelf,chose book,show book info
        case"AddShelf":
            try {
                System.out.println("Enter the name of the shelf:");
                Scanner sc = new Scanner(System.in);
                String files = sc.nextLine();
                do {
                    File dir = new File("D:\\admir\\MyBookLibrary\\"+files);
                    dir.mkdirs();
                }while(!"Exit".equals(sc.next()));
                System.out.println("Shelf added successfully!");
            }catch(Exception e) {
                System.err.println("Unable to create new Shelf!");
            }
        case"RemoveShelf":
            //remove shelf
        case"ShelfInfo":
            //shelf info
            default:
                //if incorrect operation is entered,print message,back to choosing operations
        }
    }while(!"Exit".equals(br.readLine()));

    }
}

共 (1) 个答案

  1. # 1 楼答案

    我检查了代码do while有点困难,所以我将其更改为while try此代码

      import java.io.File;
      import java.text.DateFormat;
      import java.text.SimpleDateFormat;
      import java.util.Date;
      import java.util.Scanner;
    
      public class Administrator {
    
        public static String help_msg = "[ Main Menu ]\r\n\r\nAddBook\r\nRemoveBook\r\nBookInfo\r\nAddShelf\nRemoveShelf\r\nShelfInfo";
        private static final DateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
    
        public static void main(String[] args){
          Date date = new Date();
          System.out.println(sdf.format(date));
          System.out.println("Welcome to my book library\r\n\r\n"+"ADMINISTRATOR\r\n\r\n"+help_msg+"\r\n");
    
          Scanner sc = new Scanner(System.in);
          String operate;
    
          while(!"Exit".equals(operate = sc.nextLine())){
            switch(operate) {
              case"AddBook":
                //chose shelf,add new book
              case"RemoveBook":
                //chose shelf,remove book
              case"BookInfo":
                //chose shelf,chose book,show book info
                break;
              case"AddShelf":
                try {
                  System.out.println("Enter the name of the shelf:");
                  String files;
                  while(!"Exit".equals(files = sc.nextLine())){
                    File dir = new File("D:\\admir\\MyBookLibrary\\"+files);
                    dir.mkdirs();
                    System.out.println(files+"Shelf added successfully!");
                    System.out.println("Enter another name of the shelf:");
                  }
                  return;
                }catch(Exception e) {
                  System.err.println("Unable to create new Shelf!");
                }
                break;
              case"RemoveShelf":
                //remove shelf
              case"ShelfInfo":
                //shelf info
              default:
                //if incorrect operation is entered,print message,back to choosing operations
            }
          }
    
        }
      }