У меня есть программирование для моего класса Intro to Java Programming, и я застрял с несколькими незначительными проблемами. Вот задание:Запись результата в файл .txt
Я должен написать программу, которая принимает два входа от пользователя: одно будет именем .txt-файла, а второй вход будет целым числом типа long. Он создаст новый объект File с именем файла, введенным пользователем, а затем получит объект PrintWriter, передав объект File в конструктор PrintWriter. Если файл найден, он будет считываться по всему номеру.
Затем он будет использовать рекурсивный метод для изменения числа, введенного пользователем (например, если пользователь ввел номер 123456, он изменит число на 654321). Затем он записывает это обратное число как в .txt-файл, так и на экран.
Вот мой код:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.io.PrintWriter;
public class Prog2c
{
public static void main(String[] args)
{
File inputFile = null; // File object for user's file
Scanner fileReader = null; // reads user's file
PrintWriter fileWriter = null; // writes to user's file
Scanner scan = new Scanner(System.in);
String fileName = null;
long number = 0;
try
{
fileName = scan.nextLine();
number = scan.nextLong(); // reads the whole number from the user
inputFile = new File(fileName); // creates new File object with user's file
fileReader = new Scanner(inputFile); // reads contents of user's file
System.out.println("Program 2, Christopher Moussa, masc1754");
if (inputFile.exists())
{
System.out.println("The file " + fileName + " is ready for writing."); // throws FileNotFoundException if
fileWriter = new PrintWriter(inputFile);
number = reverseNumber(number);
fileWriter.println(number); // performs recursive method on number inputted by user
System.out.println("File " + inputFile + " exists? " + inputFile.exists()); // checks to see if file exists
while (fileReader.hasNextLong())
{
number = fileReader.nextLong();
System.out.println(number); // prints contents of the file
}
}
}
catch (FileNotFoundException exception) // in case the file is not found or does not exist
{
System.out.println("FileNotFoundException file was not found: " + exception.getMessage());
System.exit(0);
}
finally
{
if (null != fileReader)
{
scan.close(); // closes scanner
fileWriter.close();
}
}
}
public static long reverseNumber(long number) // Recursive Method
{
if (number < 10) // Base Case 1: In case the number
{ // is a single digit number, I will
System.out.println(number); // just return the number
return number;
}
else // Recursion: This will take the
{ // remainder of the original number
System.out.print(number % 10); // and print it. It will then divide
reverseNumber(number/10); // the number by 10 to truncate it by
return number; // one digit. It will then return the value.
}
}
}
Вот мои проблемы:
Когда я запускаю программу, номер записывается в текстовый файл является оригинальный номер, который я введен, не число обратное (обратное число - это то, что должно быть записано в файл .txt). Он также не распечатывает содержимое файла .txt (обратный номер) на экране, хотя у меня есть сканер, который должен читать содержимое файла и печатать номер на экране (что является функцией в то время как заявление в моей программе, правильно?). Моя идея о том, почему PrintWriter не записывает обратный номер в .txt-файл, состоит в том, что вы не можете назначить результат метода переменной? Я не совсем уверен. Любые советы/предложения о том, как записать обратный номер в .txt-файл, а затем распечатать содержимое этого файла .txt (который имеет только обратный номер) на экране, будут очень благодарны, спасибо.
Вы не изменили число. Вы просто рекурсивно разбили его на отдельные цифры и напечатали. После того, как функция вернется, вы не получите обратный номер, вы возвращаете тот же номер, который вы начали с – smac89