我在创建一类弦乐器问题时遇到了两个问题。首先要求是:
java Mynamep3tst myfilename.txt here myfilename.txt是所有输出必须去的文件。该文件名应在程序中使用,如下所示:
java.io.File file = new java.io.File(args [0]);
java.io.PrintWriter output = new java.io.PrintWriter(file);
当您有要发送到文件的消息时,
output.println(消息);
此时我一直收到错误:
public static void printInstrumentArray(StringInstrument[] instruments)throws Exception{
java.io.File file = new java.io.File(args[0]);
java.io.PrintWriter output = new java.io.PrintWriter(file);
错误说“找不到符号”,我知道它是在我没有声明数组的时候做的。当我声明数组args []时,它说“线程中的异常”主“java.lang.NullPointerException”。
下一个问题
当我运行它时,它可以工作,但它不断弹出错误“通过公共API导出非公共类型”。我试过把公开放在“StringInstrument []乐器上;”。但是它会弹出错误“非法操作开始”。
public static void main(String[] args) throws Exception{//begin main
//declare instruments
StringInstrument[] instruments;
//create instrument array
instruments = createInstrumentArray();
//Print instrument array
printInstrumentArray(instruments);
}//end main
//Create an array of instrument objects
public static StringInstrument[] createInstrumentArray(){//begin method
StringInstrument[] instruments = new StringInstrument [10];
//Loop that inputs random integers into the array
for (int i = 0; i < instruments.length; i++){//begin loop
instruments[i] = new StringInstrument();
}//end loop
return instruments;
}//End method
public static void printInstrumentArray(StringInstrument[] instruments)throws Exception{
java.io.File file = new java.io.File(args[0]);
java.io.PrintWriter output = new java.io.PrintWriter(file);
//declare and initialize arrays
String[] instrumentList = new String [10];
int[] stringNumber = new int [10];
//input string names into array
instrumentList[0] = "Guitar";
instrumentList[1] = "Violin";
instrumentList[2] = "Bass Guitar";
instrumentList[3] = "Cello";
instrumentList[4] = "Banjo";
instrumentList[5] = "Sitar";
instrumentList[6] = "Rabab";
instrumentList[7] = "Viola";
instrumentList[8] = "Harp";
instrumentList[9] = "Ukulele";
stringNumber[0] = 5;
stringNumber[1] = 4;
stringNumber[2] = 5;
stringNumber[3] = 4;
stringNumber[4] = 5;
stringNumber[5] = 18;
stringNumber[6] = 3;
stringNumber[7] = 4;
stringNumber[8] = 47;
stringNumber[9] = 4;
//Print an array of instruments and their actions
for (int i = 0; i < instruments.length; i++){//begin for loop
instruments[i].setInstrumentName(instrumentList[i]);
output.println(instruments[i].instrumentNameDisplay());
output.println(instruments[i].numberOfStrings(stringNumber[i]));
output.println(instruments[i].tuneInstrument());
output.println(instruments[i].playInstrument());
output.println(instruments[i].playInstrumentBand());
output.println(" ");
}//end for loop
output.close();
}//end method
}//end class
答案 0 :(得分:0)
对于第一个问题,您需要将args从main传递给printInstrumentArray作为参数。 args仅对main可见。
至于第二个问题,问题是你有一个声明为public的函数(意味着外部类可以使用它)返回对声明为private的类的实例的引用(意味着外部类不能使用)它)。这是一个矛盾。要么将StringInstrument设为public,要么将createInstrumentArray设为私有。