我是编程的新手,最近试图制作一个简单的程序来创建带有我想要的名称的多个目录。它正在工作,但在开始时,它在不问我的情况下添加了第一个"数字"。之后,我可以制作任意多的文件夹。
public class Main {
public static void main(String args[]) throws IOException{
Scanner sc = new Scanner(System.in);
System.out.println("How many folders do you want?: ");
int number_of_folders = sc.nextInt();
String folderName = "";
int i = 1;
do {
System.out.println("Folder nr. "+ i);
folderName = sc.nextLine();
try {
Files.createDirectories(Paths.get("C:/new/"+folderName));
i++;
}catch(FileAlreadyExistsException e){
System.err.println("Folder already exists");
}
}while(number_of_folders > i);
}
}
如果我选择制作5个文件夹,则正在发生类似的情况:
1。您想要几个文件夹?:2. 53.文件夹NR。04.文件夹NR。15.//,直到现在我才能将其命名为第一个文件夹NAD它将被创建。
如果这是一个愚蠢的问题,我将立即将其删除。预先感谢您。
这是因为您的sc.nextInt()
在此行中:
int number_of_folders = sc.nextInt();
不消耗最后的newline字符。
当您输入输入的目录时,它也具有ASCII值(10)。当您阅读NextInt时,Newline字符尚未阅读,NextLine()首先收集该行,而不是正常继续使用您的下一个输入。
在这种情况下,您可以将mkdir
类的CC_2部分使用如下:
String directoryName = sc.nextLine();
File newDir = new File("/file/root/"+directoryName);
if (!newDir.exists()) { //Don't try to make directories that already exist
newDir.mkdir();
}
应该清楚如何将其纳入您的代码。