2017-04-06 2 views
0

出力ファイルに出力を書き込む方法が完全に固まっています。うまくいけば私はもっと明確にするためにいくつかの情報を提供しました。私を助けることができる誰にも感謝します。ファイルに配列を書き込むにはどうすればよいですか?

出力1234は、入力(私はtxtファイルに書き込まれるように、これを必要とする)である。現在、txtファイルに書き込まれている何

Your original number was: 
1234 
The reversed digits are: 
4321 
The even digits are: 
2 4 
The odd digits are: 
1 3 

:ここ

Your original number was: 
1234 

は私です今すぐコード:

import java.util.Scanner; 
    import java.io.*; 

    public class order { 

    //Input validation. Allows any integer greater than 0. Any number starting 
    with 0 is invalid. 

    private static void validate(Scanner input) { 

     String userEntry;  

     System.out.println("Please enter a positive integer greater than 0."); 
     userEntry = input.nextLine(); 

     while (!userEntry.matches("^[1-9][0-9]*$")) { 
      System.out.println("Invalid number. Try again"); 
      userEntry = input.nextLine(); 
     } 

     try { 
      FileWriter writer = new FileWriter("outDataFile.txt", true); 
      PrintWriter outputfile = new PrintWriter(writer); 

      outputfile.println("Your original number was: "); 
      outputfile.println(userEntry); 
      System.out.println("Your original number was: "); 
      System.out.println(userEntry); 

      System.out.println("The reversed digits are: "); 
      reverse (input, userEntry); 
      System.out.println(); 

      System.out.println("The even digits are: "); 
      even (input, userEntry); 
      System.out.println(); 

      System.out.println("The odd digits are: "); 
      odd (input, userEntry); 
      System.out.println(); 

      } catch (IOException e){    
     }    
    } 

    //Reverses the order of digits. 

    public static void reverse(Scanner keyboard, String intString) { 

     int strsize = intString.length(); 
     int[] digits = new int[strsize]; 

     for (int i = 0; i < strsize; ++i) 
     { 
      String temp = Character.toString(intString.charAt(i)); 
      digits[i] = Integer.parseInt(temp); 
     } 

     for (int i = strsize - 1; i >= 0; --i) 
     { 
      System.out.print(digits[i]); 
     } 
    } 

    //Extracts even numbers. 
    public static void even (Scanner keyboard2, String intString2) { 

     int strsize2 = intString2.length(); 
     int[] digits2 = new int[strsize2]; 

     for (int i = 0 ; i < strsize2 ; ++i) { 

       String temp = Character.toString(intString2.charAt(i)); 
       digits2[i] = Integer.parseInt(temp); 

       if(digits2[i] % 2 == 0) { 
       System.out.print(digits2[i] + " "); 
      } 
     }           
    } 

    //Extracts odd numbers. 

    public static void odd (Scanner keyboard3, String intString3) { 

     int strsize3 = intString3.length(); 
     int[] digits3 = new int[strsize3]; 

     for (int i = 0 ; i < strsize3 ; ++i) { 

       String temp = Character.toString(intString3.charAt(i)); 
       digits3[i] = Integer.parseInt(temp); 

       if(digits3[i] % 2 != 0) { 

       System.out.print(digits3[i] + " ");        
      } 
     }           
    } 

    //Allows continuous input. 

    public static void main(String[] args) {     

     Scanner keyboard = new Scanner(System.in); 

     boolean validate = true;    
     while (validate) { 
     validate(keyboard); 

     boolean invalid = true;                  
     while (invalid) { 
      System.out.println("Would you like to try another calculation? [y/n]");    

      Scanner input = new Scanner(System.in); 
      char answer; 
      String option = input.next(); 

      if ("y".equalsIgnoreCase(option)) {       
       invalid = false; 
      } 
      else if ("n".equalsIgnoreCase(option)) {      
       invalid = false; 
       validate = false; 
        System.out.println("Goodbye.");    
        input.close(); 
      } 
      else {                     
       System.err.println("The only valid answers are y/n."); 
       System.out.println(); 
      } 
      } 
     } 
    } 
} 
+0

元の番号以外のものを印刷するために 'PrintWriter'を使用することは決してありません。したがって、これは出力ファイルですべて表示されます。 –

+1

ようこそスタックオーバーフロー!私は、このコードの95%があなたの質問に関連していないと思います。あなたの問題を示す[**最小**、完全で実証可能な例](http://stackoverflow.com/help/mcve)を作成してください。 –

+0

あなたは 'System.out'の出力を期待していますか?もしそうなら、 'PrintWriter'をあなたの他のメソッドに渡して、最初の行と同じ方法で書くのはどうですか? – petehallw

答えて

0

以下のcをテストしたファイルに逆の番号を書き込むために働くode。他の方法にも同じテクニックを適用できます。すべての配列要素を同じ行に取得するには、PrintWriter.printlnではなくPrintWriter.printを使用しています。

public class Order { 

    PrintWriter outputfile; 
    FileWriter writer; 

    public void validate(Scanner input) { 

     String userEntry;  

     System.out.println("Please enter a positive integer greater than 0."); 
     userEntry = input.nextLine(); 

     while (!userEntry.matches("^[1-9][0-9]*$")) { 
      System.out.println("Invalid number. Try again"); 
      userEntry = input.nextLine(); 
     } 

     try { 
      writer = new FileWriter("outDataFile.txt", true); 
      outputfile = new PrintWriter(writer); 

      outputfile.println("Your original number was: "); 
      outputfile.println(userEntry); 
      outputfile.flush(); 
      System.out.println("Your original number was: "); 
      System.out.println(userEntry); 

      System.out.println("The reversed digits are: "); 
      outputfile.println("The reversed digits are: "); 
      reverse (input, userEntry, writer); 
      System.out.println(); 

     } catch (IOException e){    
     }    
    } 

    //Reverses the order of digits. 
    public void reverse(Scanner keyboard, String intString, FileWriter writer) { 

     outputfile = new PrintWriter(writer); 

     int strsize = intString.length(); 
     int[] digits = new int[strsize]; 

     for (int i = 0; i < strsize; ++i) 
     { 
      String temp = Character.toString(intString.charAt(i)); 
      digits[i] = Integer.parseInt(temp); 
     } 

     for (int i = strsize - 1; i >= 0; --i) 
     {   
      System.out.print(digits[i]); 
      outputfile.print(digits[i]); 
      outputfile.flush(); 
     } 
    } 
} 
+0

ありがとうございました。これは多くの助けになります。 – Navi4458

+0

@ Navi4458素晴らしい! 'PrintWriter'をフラッシュすることは重要なステップでした。もしあなたがそれに満足していれば、答えとして受け入れられるとマークすることができますか? – petehallw

0

あなたのtryブロックに問題があります。

誤:

outputfile.println("Your original number was: "); 
     outputfile.println(userEntry); 
     System.out.println("Your original number was: "); 
     System.out.println(userEntry); 

    System.out.println("The reversed digits are: "); 
    reverse (input, userEntry); 
    System.out.println(); 

    System.out.println("The even digits are: "); 
    even (input, userEntry); 
    System.out.println(); 

    System.out.println("The odd digits are: "); 
    odd (input, userEntry); 
    System.out.println(); 

問題:あなたは、ほとんどの

正しい 'のoutputfile.printlnとS' System.out.printlnをミラーリングする必要があります:私はしました

outputfile.println("Your original number was: "); 
outputfile.println(userEntry); 
System.out.println("Your original number was: "); 
System.out.println(userEntry); 

System.out.println("The reversed digits are: "); 
reverse (input, userEntry); 
System.out.println(); 
outputfile.println("The reversed digits are: "); 
reverse (input, userEntry); 
outputfile.println(); 


System.out.println("The even digits are: "); 
even (input, userEntry); 
System.out.println(); 
outputfile.println("The even digits are: "); 
even (input, userEntry); 
outputfile.println(); 

System.out.println("The odd digits are: "); 
odd (input, userEntry); 
System.out.println(); 
outputfile.println("The odd digits are: "); 
odd (input, userEntry); 
outputfile.println(); 
+0

Oh No.という事は承知しています。今私の問題は、私の配列がテキストファイルに書き込まれていないということです。私は出力の例と書かれているものを編集しました。うまくいけば私は問題をもう少し明確にしました。 – Navi4458

+0

@ Navi4458多分、奇数オッズに名前を付けるメソッドを追加するか、偶数番に名前を付けるメソッドを追加し、outputfile.println( "奇数の数字は" + odds)です。 outputfile.println( "偶数桁は" + evens "です。 – CodingNinja

+0

@ Navi4458方法で明確にしてくれてありがとう – CodingNinja

関連する問題