Как использовать цикл for и PrintWriter, как мне создать несколько файлов со случайным именем, каждый из которых имеет свой собственный код? - PullRequest
1 голос
/ 29 сентября 2019

В основном проблема возникает после компиляции и ввода данных.Создается только один файл.Все работает правильно, кроме случаев, когда я ввожу число больше единицы.Ввод числа больше единицы должен позволить мне иметь несколько файлов, каждый со случайными именами, генерируемыми прямо из того, что я понимаю, верно?Вместо этого он выбирает создание только одного файла со случайным именем и делает все нормально, за исключением создания тех нескольких дополнительных файлов, о которых я ему говорил.

Это для личного развлечения, и я использую notepad ++, чтобы создать его, а затемЯ компилирую и запускаю его, используя javac и java в командной строке.Я в основном использую то, чему мы научились на уроке пару дней назад, чтобы создать это, а также множество дополнительных вещей, над которыми мне пришлось провести исследование, но я действительно хочу выяснить, как это сделать, и не смог многого найти в этом.цикл for, как я хочу это сделать.

import java.util.Scanner;
import java.io.PrintWriter;
import java.io.FileNotFoundException;

public class rangen {

    static String getnumlet(int n) {

        String numlet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr" +
            "stuvwxyz0123456789";
        StringBuilder sb = new StringBuilder(n);

        for (int i = 0 ; i < n ; i++) {
            int index = (int)(numlet.length() * Math.random());

            sb.append(numlet.charAt(index));
        }
        return sb.toString();
    }

    public static void main(String[] args) {

        final int length = 10;
        int amount = 0;

        String printername = (rangen.getnumlet(length) + ".java");
        String name = (printername.substring(0 ,
            printername.indexOf('.')).trim());
        Scanner input = new Scanner(System.in);
        PrintWriter tofile = null;

        System.out.print("Enter the amount of files you want to create: ");
        amount = input.nextInt();

        for (int i = 1 ; i <= amount ; i++) {

            try {

                tofile = new PrintWriter(printername);

                tofile.print("// Creator: Unknown...\n");
                tofile.print("// Date Created: 9-28-2019\n");
                tofile.print("// Last Modified: 9-28-2019\n");
                tofile.print("// Description: This file was \n" + 
                    "//     randomly generated.\n");
                tofile.print("public class " + name + " {\n");
                tofile.print("  public static void main(String[] args) {\n");
                tofile.print("      private static final double inf = \n" +
                    "           Double.POSITIVE_INFINITY;\n");
                tofile.print("      for (int i = 1 ; i <= inf ; i++) {\n");
                tofile.print("          System.out.print(\"yeet \" + i);\n");
                tofile.print("      }\n");
                tofile.print("  }\n");
                tofile.print("}\n");
                for (int x = 0 ; x <= 5; x++ ) {

                    tofile.print("// LOL " + x + "\n");
                }
            }
            catch (FileNotFoundException e) {
                System.out.println("couldn't create " + printername);
            }
            tofile.close();
        }
    }
}

Допустим, вы указали значение 3 в консоли.Затем я ожидаю, что он создаст три отдельных файла, каждый из которых содержит код, который я велел записать в файл.Не должно появляться никаких сообщений об ошибках, но для меня создается только один файл вместо 3.

1 Ответ

0 голосов
/ 29 сентября 2019

Вам нужно генерировать новое случайное имя файла на каждой итерации цикла for.Как написано, ваша программа генерирует одно случайное имя файла и использует одно и то же имя на каждой итерации.

for (int i = 1 ; i <= amount ; i++) {
    String printername = (rangen.getnumlet(length) + ".java");
    String name = printername.substring(0, printername.indexOf('.')).trim();

    try {
        tofile = new PrintWriter(printername);
        ...
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...