Как разработать код, чтобы сохранить больше, чем слово в выбранном файле? - PullRequest
0 голосов
/ 31 мая 2019

Цель моей программы - дать пользователю возможность добавить что-то в новый или старый файл.

Из-за моего кода пользователь может добавить в файл только одно слово. Я записал, где проблема. Я не знаю, как сделать сохранение слов в файле неограниченным. Я пытался использовать цикл for ... К сожалению, это не имело никакого смысла.

public class AddAndSave {


private static Scanner scanner = new Scanner(System.in);

    private static Formatter formatter = null;
    private static Scanner reader;

    public static void main(String args[]) {

        System.out.println("In which file do you want to add?");
        String fileName = scanner.next();
        File myFile = new File("C://Meine Dateien// " + fileName + ".txt");

        if (myFile.exists() == true) {
            try {
                reader = new Scanner(myFile);
                String fileContent = "";

                while (reader.hasNext() == true) {
                    fileContent = fileContent + reader.next();
                }
                formatter = new Formatter(myFile);
                formatter.format("%s", fileContent + "  ");
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        } else {
            try {
                formatter = new Formatter(myFile);
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }
        System.out.println("What do you want to add?");
        String newInput = scanner.next();//hier is the problem


        formatter.format("%s", newInput);
        System.out.println();
        System.out.println("Finish! Thank you for using our programm!");
        formatter.close();
    }
}

1 Ответ

0 голосов
/ 31 мая 2019

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

Используйте Scanner # nextLine () вместо метода Scanner # next () и используют его вместе с методом Scanner # HasNextLine () вВаше состояние while (вместо метода Scanner # hasNext () ):

String newInput = scanner.nextLine();

Использование сканера # nextLine () метод, в котором вы запрашиваете имя файла и запрашиваете, что добавить в файл !.Также используйте его в цикле while для чтения файла (в сочетании с методом Scanner # hasNextLine () ).Внимательно прочитайте о различиях между всеми этими методами!

Scanner # hasNext () и Scanner # next () методы более ориентированы на слова Ситуации на основе токенов (слов)(по одному слову за раз), тогда как методы Scanner # hasNextLine () и Scanner # nextLine () используются для целых строковых строк.Это то, что я вам верю действительно хочу.

Другие примечания:

Возможно, вы захотите удалить пробел после последних косых черт(//):

"C://Meine Dateien// " + fileName + ".txt"; 

если, конечно, вы не хотите, чтобы t0 добавлял пробел в начале каждого имени для каждого файла, создаваемого вашим приложением.

При использовании логических переменныхв таких условиях, как в if операторов, вы можете просто использовать:

if (myFile.exists()) {   // IF true

вместо:

if (myFile.exists() == true) {  // IF true

и:

if (!myFile.exists()) {   // IF false

вместо:

if (myFile.exists() == false) {  // IF false

Любой способ работает просто отлично, но позже вы обнаружите, что более короткий путь менее подвержен ошибкам из-за опечаток, и я думаю, что его легче читать, но это только мое мнение.

Не забудьте закрыть файл reader .Используйте Попробуйте с ресурсами , чтобы позаботиться о таких вещах для вас в отношении как вашего читателя, так и писателя.

...