2013-12-07 59 views
0

我正在學習Java初級編程課程,目前我正在研究最終項目。可以在這裏找到作業說明link將Instrument類方法的輸出寫入用戶從命令行參數輸入的文本文件

我很難完成此任務「將輸出從Instrument類方法寫入用戶從命令行參數輸入的文本文件(例如,java Mynamep3tst myfilename.txt )「。這裏是我的一些代碼:

import java.io.*; 

public class Test{ 

public static void main(String[] args) { 

    String outputFile = ""; 
    if (0 < args.length) { 
     outputFile = args[0]; 
     System.out.println("This program will write output to this file: " + outputFile + "\n"); 

    try { 

     File file = new File(outputFile); 

     PrintWriter output = new PrintWriter(outputFile); 

     output.println("hello"); //to check if ir prints anything 

     Violin[] simpleViolin = new Violin[5]; 

    //Create 5 violin objects 
    for (int i = 0; i < simpleViolin.length; i++){ 
     simpleViolin[i] = new Violin(); 
    } 

    output.println("\nLet's tune " + Violin.getNumberOfViolins() + " violins."); 
    for(int i = 0; i < simpleViolin.length; i++){ 
     output.print(i + 1); 
     simpleViolin[i].tuneOn(); 
    } 

    output.println("\nNow let's start playing " + Violin.getNumberOfViolins() + " violins."); 
    for(int i = 0; i < simpleViolin.length; i++){ 
     output.print(i + 1); 
     simpleViolin[i].startPlaying(); 
    } 

    output.println("\nIt looks like " + Violin.getNumberOfViolins() + " violins have untuned."); 
    for(int i = 0; i < simpleViolin.length; i++){ 
     output.print(i + 1); 
     simpleViolin[i].tuneOff(); 
    } 

    output.println("\nThis music is terrible! Let's stop it!"); 
    for(int i = 0; i < simpleViolin.length; i++){ 
     output.print(i + 1); 
     simpleViolin[i].stopPlaying(); 
    } 

     output.close(); 

    } 

    catch (IOException io){ 

     System.out.println("Sorry that file is not found " + io); 

    } 
    }//end if 

    }//end main 

}//end Test 

class Violin{ 
private final int numberOfStrings = 4; 
private final char[] stringNames = {'E', 'A', 'D', 'G'}; 
private boolean isTuned = false; 
private boolean isPlaying = false; 
private static int numberOfViolins = 0; 
private PrintWriter output; 

public Violin(){ 
    numberOfViolins++; 
} 

public void startPlaying() { 
    isPlaying = true; 
    System.out.println(" violin is now playing."); 
} 

public void stopPlaying() { 
    isPlaying = false; 
    System.out.println(" violin has stopped playing."); 
} 

public void tuneOn() { 
    isTuned = true; 
    System.out.println(" violin is now tuned."); 
} 

public void tuneOff() { 
    isTuned = false; 
    System.out.println(" violin is untuned."); 
} 

static int getNumberOfViolins(){ 
    return numberOfViolins; 
} 
}//end class Violin 

所以我的問題是如何讓我的小提琴類方法打印到用戶指定的文件?

回答

0

當您創建小提琴對象時,您可以將輸出作爲參考傳遞給構造函數,因此在小提琴內部您將使用輸出而不是System.out.println。

更改Violoin構造函數:

,然後只用小提琴內部outpu。

+0

謝謝!這在NetBeans中非常有用。然而,當我把我的類小提琴放在一個單獨的文件中並嘗試通過命令提示符編譯我的Test.java時,它給了我一個錯誤:構造函數類Violin中的小提琴不能應用於給定的類型。基本上我將一個參數傳遞給一個不需要參數的構造函數。 – Slado

+0

你是否把課程公開了? – prmottajr

+0

我確實公開了它 – Slado