Ява хранит номер в файле и заменит номер на большее число, но не будет хранить, если файл пуст - PullRequest
0 голосов
/ 24 июня 2018

Я пробовал код file.length для сканирования файла, и если он пуст, он сохранит новый номер. Тем не менее, он не будет хранить его в файле, если файл пуст. Но он заменит номер в файле, если новый номер больше. Я пытаюсь заставить его сохранить первый номер в файле.

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

public class Tester {

    public static void main(String[] args)throws Exception{

        Scanner reader = new Scanner(System.in);  
        System.out.println("Enter a number: ");
        int n = reader.nextInt(); 
        reader.close();

        File file = new File("number.txt");
        Scanner input = new Scanner(file);
        int a = input.nextInt();

        if (n > a){
            PrintWriter output = new PrintWriter(file);
            output.println(n);
            output.close();
        } else if (file.length() == 0){
            PrintWriter output = new PrintWriter(file);
            output.println(n);
            output.close();
        }else { 
           System.out.println("File doesn't exist");
       }
    }
}

1 Ответ

0 голосов
/ 15 июля 2018

Я оптимизировал ваш код.

Во-первых, вы должны упомянуть каталог файла number.txt, в моем случае он создается в пакете test, поэтому я упомянул src/test/number.txt.

Затем я присвоил null значение классу PrintWriter, чтобы позже использовать его внутри if операторов.

Scanner input = new Scanner(file); в этом случае вам не нужно использовать второй класс Scanner, если вам не нужен ввод с консоли, это зависит от вас.

while цикл проверяет, является ли ваш файл пустым или нет, если он пуст, int a равен нулю, иначе int a получает номер из файла. Остальная часть кода равна вашему коду.

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

public class Tester {
    public static void main(String[] args) throws Exception {

        Scanner reader = new Scanner(System.in);
        File file = new File("src/test/number.txt");
        PrintWriter output = null;

        System.out.println("Enter a number: ");
        int n = reader.nextInt();

        //you do not need to use a second Scanner class if you do not need any input
        Scanner input = new Scanner(file);
        int a = 0;

        //this is for reading a number of "number.txt" file
        while (input.hasNext()) {
            a = input.nextInt();
        }

        if (n > a) {
            output = new PrintWriter(file);
            output.println(n);
            output.close();
        } else if (file.length() == 0) {
            output = new PrintWriter(file);
            output.println(n);
            output.close();
        } else {
            System.out.println("File doesn't exist");
        }
    }
}
...