2016-02-25 2 views
0

У меня есть программирование для моего класса 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 (который имеет только обратный номер) на экране, будут очень благодарны, спасибо.

+0

Вы не изменили число. Вы просто рекурсивно разбили его на отдельные цифры и напечатали. После того, как функция вернется, вы не получите обратный номер, вы возвращаете тот же номер, который вы начали с – smac89

ответ

0

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

Смежные вопросы