使用 while 或 do while 循环从用户输入创建文件夹
Creating folders from user input using while or do while loop
我在使用 while、do-while 循环创建多个文件夹时遇到问题 Java.I 尝试创建文件但我没有问题,但文件夹,不同的故事。
我正在使用扫描仪,BufferedReader.The 问题是,它的行为真的很奇怪。
如果我输入至少 3 个文件夹名称,它通常只会首先创建,或者跳过第二个并首先创建 third.At 最后它不会接受我的 "Exit" 作为我的完成点它只会创建名为 "Exit" 并等待更多输入。
我已经在 google 中进行了搜索,但没有找到任何有用的东西 me.Here 是代码,(案例 AddShelf):`package library;
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()));
}
}
我检查了代码do while有点困难,所以我把它改成了while try this code。
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
}
}
}
}
我在使用 while、do-while 循环创建多个文件夹时遇到问题 Java.I 尝试创建文件但我没有问题,但文件夹,不同的故事。 我正在使用扫描仪,BufferedReader.The 问题是,它的行为真的很奇怪。 如果我输入至少 3 个文件夹名称,它通常只会首先创建,或者跳过第二个并首先创建 third.At 最后它不会接受我的 "Exit" 作为我的完成点它只会创建名为 "Exit" 并等待更多输入。 我已经在 google 中进行了搜索,但没有找到任何有用的东西 me.Here 是代码,(案例 AddShelf):`package library;
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()));
}
}
我检查了代码do while有点困难,所以我把它改成了while try this code。
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
}
}
}
}