2017-04-06 2 views
0

출력 파일에 내 출력을 쓰는 방법을 완전히 고수했습니다. 희망적으로 나 자신을 더 명확하게하기 위해 아래에 몇 가지 정보를 제공했습니다. 나를 도울 수있는 누군가에게 감사드립니다.배열을 파일에 쓰려면 어떻게해야합니까?

1234 입력 (I이이 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 %가 귀하의 질문과 관련이 없다고 생각합니다. 문제를 나타내는 [** Minimal **, Complete and Verifiable Example] (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과의'는 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

오, 안돼. 나는 이해. 내 문제는 지금 내 배열을 텍스트 파일에 쓰고 있지 않습니다. 출력의 예와 작성중인 내용을 편집했습니다. 바라건대 내가 내 문제를 좀 더 분명하게 만들었을 것이다. – Navi4458

+0

@ Navi4458 어쩌면 홀수 승수의 이름을 지정하는 메서드 나 짝수 번인을 명명하는 메서드를 추가하고 outputfile.println ("홀수는"+ odds); 및 outputfile.println ("짝수는 다음과 같습니다."+ evens); – CodingNinja

+0

@ Navi4458 방식으로 명확히 해 주셔서 감사합니다 – CodingNinja

관련 문제