我是编程新手,最近尝试制作一个简单的程序,用我想要的名字创建多个目录。它正在工作,但在开始时,它是在不问我的情况下添加第一个“数字”。在此之后,我可以制作尽可能多的文件夹。
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. How many folders do you want?: 2. 5 3. Folder nr. 0 4. Folder nr. 1 5. //And only now I can name first folder nad it will be created.
如果这是一个愚蠢的问题,我会立即将其删除。提前谢谢。
答案 0 :(得分:3)
这是因为此行中的sc.nextInt()
:
int number_of_folders = sc.nextInt();
不消耗最后一个换行符。
当你输入了你输入的目录数量时,它也有ASCII值(10)。当您读取nextInt时,尚未读取换行符,并且nextLine()首先收集该行,然后在下一次输入时正常继续。
答案 1 :(得分:0)
在这种情况下,您可以使用mkdir
类的File
部分:
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();
}
应该清楚如何将其合并到您的代码中。