0
votes

Attraper des résultats d'une méthode vide dans un fichier de sortie

Je suis nouveau à Java alors merci d'avoir aidé!

public static void readFile (Scanner console, String file_input) throws FileNotFoundException {
      // Setting up new Scanner to scan the file
      Scanner input = new Scanner (file_input);
       // Prompt user for output file's name
      System.out.print("Output file name: ");
      String name_output = console.next();
      PrintStream file_output = new PrintStream(new File(name_output));
      System.out.println("YazLang program interpreted and output to .txt file!");
      System.out.println();
      while (input.hasNext()) {
         String value = input.nextLine().toLowerCase();
         if (value.startsWith("convert")) {
            int concert_temp = convert(value);
            file_output.println(concert_temp);
         } else if (value.startsWith("range")) {
            range(value);
         } else if (value.startsWith("repeat")) {
            repeat(value);
         }
      }
   } 


2 commentaires

Les méthodes d'annulation n'ont aucun résultat. Cela étant dit, vous n'avez pas besoin de retourner une valeur pour écrire dans un fichier. Qu'est-ce que vous rencontrez exactement? Juste pour dire: // Configuration du nouveau scanner pour lire le jeton du scanner de chaîne d'entrée de l'utilisateur = nouveau scanner (valeur); est un peu de non-sens.


J'ai testé votre code et il écrit pour déposer comme il se doit. Peut-être vérifier si votre dossier existe ou utilise du débogueur?


3 Réponses :


0
votes

Pourquoi ne changez-vous pas la signature de code> méthode code> pour renvoyer int code>? xxx pré>

puis écrivez le résultat du fichier dans ReadFile Code> Méthode comme ceci: p>

public static void readFile (Scanner console, String file_input) throws FileNotFoundException {
  // omitted..
  while (input.hasNext()) {
     String value = input.nextLine().toLowerCase();
     if (value.startsWith("convert")) {
        int concert_temp = convert(value);
        file_output.println(concert_temp);
     } else if (value.startsWith("range")) {
        // here
        int concert_temp = range(value);
        file_output.println(concert_temp);
     } else if (value.startsWith("repeat")) {
        repeat(value);
     }
  }
} 


3 commentaires

Parce que je veux toujours avoir la F / C à côté du résultat de la valeur.


Qu'est-ce que f / c ...?


Le type de température (Celsius ou Fahrenheit) puisqu'il s'agit d'une méthode de conversion.



0
votes

Vous pouvez utiliser system.setout () ( HTTPS: //www.TutorialSpoint. com / java / lang / system_setout.htm ) Insérez cette ligne après la ligne 7 dans votre méthode ReadFile:

System.setOut(file_output);


0 commentaires

0
votes

Il y a deux options:

  1. définir le imprimanteam dans la fonction la plus extérieure, puis transmettez-le à la fonction dont vous avez besoin. Passez à l'écriture au fichier à l'aide de PrintStream :: Imprimer ... Méthode.

  2. Définissez une classe d'emballage qui écrira sur les deux flux: xxx

    init imprimante: xxx

    remplace maintenant chaque appel à system.out.println avec: xxx

    1. Utiliser une bibliothèque tierce partie. Par exemple TeeOutPutStream

0 commentaires