2016-12-06 10 views
0

그래서 기본적으로 가방을 만들고 있는데 가방 중 하나에 적어도 100000 개의 요소가 있어야한다고 들었습니다. 이클립스의 콘솔 창에 맞지 ​​않습니다. 따라서 파일에 정보를 쓰는 것이 더 좋은 아이디어 인 것 같습니다. 내 주요 메서드 및 runBigBad 메서드를 여기에 넣습니다. 보시다시피, runBigBag 후에, 내가하고 싶은 것이 더 있습니다. 그것은 컴파일되어 잘 실행됩니다. 그러나 runBigBag() 호출 후 모든 내용을 텍스트 파일로 인쇄합니다. 난 그냥 runBigBag()의 내용을 텍스트 파일에, 나머지는 콘솔 창에 인쇄하고 싶습니다. 누군가 나를 도울 수 있습니까? finally 절을 사용하여 ps.close()를 수행하려고하면 ps를 초기화하여 파일을 null로 만듭니다. 그래서 쉬운 방법이 아니면 내가 무엇을해야할지 모르겠습니다. 측설 그래서 이후의 모든 System.out에 호출이 파일 라이터로 전송되는 기본 출력 스트림을 변화하여인쇄 스트림 닫기

public class TestBag { 

public static <E> void main(String[] args) { 
    //Start time for WHOLE PROGRAM 
    final long start = System.currentTimeMillis(); 
    //Run small bag 
    runSmallBag(); 
    //RESET COUNTERS TO ALLOW BIG BAG TO KEEP TRACK OF COMPLEXITY 
    Bag.resetCounters(); 
    //Run big bag 
    runBigBag(); 
    //Display the operation counters for each method used in whole program 
    System.out.println("Number of times add() was used for whole program: " + Bag.addCountA + "\n"); 
    System.out.println("Number of times remRand() was used for whole program: " + Bag.ranRemCountA + "\n"); 
    System.out.println("Number of times rem() was used for whole program: " + Bag.remCountA + "\n"); 
    System.out.println("Number of times contains() was used whole program: " + Bag.containsCountA + "\n"); 
    System.out.println("number of times addAll() was used whole program: " + Bag.addAllCountA + "\n"); 
    System.out.println("Number of times union() was used whole program: " + Bag.unionCountA + "\n"); 
    System.out.println("Number of times equal() was used whole program: " + Bag.equalsCountA + "\n"); 
    //End timer for whole program 
    final long end = System.currentTimeMillis(); 
    //Display timer for whole program 
    System.out.println("The whole program took " + ((end - start)*.001) + " seconds to run"); 
} 
public static <E> void runBigBag(){ 

    //Start time for big bag operations 
    final long start2 = System.currentTimeMillis(); 

    boolean prog = true; 

    //Create file to write bag too 
    File file = new File("bag.txt"); 
    PrintStream ps; 
    try { 
     ps = new PrintStream(new FileOutputStream(file)); 
     System.setOut(ps); 
    } catch (FileNotFoundException f) { 
     f.printStackTrace(); 
    } finally 
    //irrelevant code here 


    //End timer for big bag 
    final long end2 = System.currentTimeMillis(); 

    //Display timer for big bag 
    System.out.println("This part of the program took " + ((end2 - start2)*.001) + " seconds to run"); 

} 

}

답변

2

. 그런 일이 일어나지 않게하려면 파일 쓰기에 기본 출력 스트림을 사용하지 마십시오.

문제에 대한 가장 빠른 답변은 여기에 있습니다. 나는 기본 시스템 출력과에서를 사용하는 다른의 PrintStream를 만들어

PrintStream ps; 
PrintStream stdout = System.out; 

: How do I create a file and write to it in Java?

0

토시의 대답은 아마 나를 위해 잘 작동 할 동안, 나는 실제로 그것을 내가 기대했다 방법을 수행하는 방법 발견 나는 이것이 아마 내가하기위한 의도가없는 백그라운드에서 무언가를하지만, 내게 필요한 출력을 제공 확신

System.setOut(stdout); 

: 메소드의 끝, 나는에 넣어. 귀하의 제안에 감사드립니다.