Вы написали "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.(Если вы не знаете, почему он должен быть внутри, просто спросите)