Как включить метод в файловый инструмент - PullRequest
0 голосов
/ 09 апреля 2019

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

Напишите метод isPrime, который принимает число и определяет, является ли число простым или нет.Возвращает логическое значение.

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

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

Измените main, чтобы выдать соответствующие исключения для работы с файлами.

Я пробовал несколько разных способов написания метода с помощьювыходной файл, но я не уверен, как именно это сделать.

 public static void main(String[] args) throws IOException {
    Scanner keyboard = new Scanner(System.in);
    System.out.println("What is the name of the input file?");
    String inputfile = keyboard.nextLine();
    File f = new File(inputfile);
    System.out.println("What is the name of the output file?");
    String outputfile = keyboard.nextLine();
    Scanner inputFile = new Scanner(f);
    FileWriter fw = new FileWriter(outputfile);
    PrintWriter pw = new PrintWriter(new File(outputfile));
    while (inputFile.hasNextLine()) {
       pw.write(inputFile.nextLine().isPrime());
       pw.write(System.lineSeparator());
    }
    pw.close();
    inputFile.close();       
}

public static void isPrime (int num) throws IOException {
    boolean flag = false;
    for (int i =2; i <= num/2; i++) {
        if (num % i ==0) {
            flag = true;
            break;
        }
    }
    if (!flag) 
        System.out.println(num + "is a prime number");
    else 
        System.out.println(num + "is not a prime number");
}

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

1 Ответ

1 голос
/ 09 апреля 2019

Вы написали "inputFile.nextLine (). IsPrime ()".Но inputFile.nextLine () возвращает вам строку.Нет метода isPrime (), который вы можете вызвать для String, поэтому вы получите ошибку компиляции.Сначала вы должны преобразовать его в целое число, передать его в свой метод, а затем обработать результат:

isPrime(Integer.parseInt(inputFile.nextLine()));

Я предлагаю вам просто вернуть строку сообщения из вашего метода isPrime () вместо void, затемвы можете правильно с этим справиться:

pw.write(isPrime(Integer.parseInt(inputFile.nextLine())));

ДОБАВЛЕНИЕ: Я изменил ваш код, чтобы вы могли видеть, куда добавить предложенные строки.Я также пропустил ненужные строки.

public static void main(String[] args) throws IOException {
    Scanner keyboard = new Scanner(System.in);
    System.out.println("What is the name of the input file?");
    String inputfile = keyboard.nextLine();
    File f = new File(inputfile);
    System.out.println("What is the name of the output file?");
    String outputfile = keyboard.nextLine();
    Scanner inputFile = new Scanner(f);
    PrintWriter pw = new PrintWriter(new File(outputfile));
    while (inputFile.hasNextLine()) {
        String nextLine = inputFile.nextLine();
        boolean isPrime = isPrime(Integer.parseInt(nextLine));
        if (isPrime) {
           pw.write(nextLine + System.lineSeparator());
        }
    }
    pw.close();
    inputFile.close();       
}

public boolean isPrime (int num) {
    for (int i = 2; i <= num / 2; i++) {
        if (num % i == 0) {
            return false;
        }
    }
    return true;
}

TODO: поместите свой код открытия файла в блок try-catch-finally и поместите команды close () в его блок finally.(Если вы не знаете, почему он должен быть внутри, просто спросите)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...