Java 将代码写入输出文件,以及非公共类型错误
我有两个问题,我正在处理我的创建一类弦乐器的问题。首先,要求是:Java 将代码写入输出文件,以及非公共类型错误,java,output,public-method,Java,Output,Public Method,我有两个问题,我正在处理我的创建一类弦乐器的问题。首先,要求是: main代码中的输出文件名必须是命令行中指定的名称,在命令行中可以找到所需的代码。按照要求中的规定,测试类必须以命令行中的参数启动: java Mynamep3tst myfilename.txt此处myfilename.txt是所有输出必须放在其中的文件。该文件名应在程序中使用,如下所示: java.io.File File=新的java.io.File(args[0]) java.io.PrintWriter输出=新的java
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[]时,它会说“线程中的异常”main“java.lang.NullPointerException”
下一个问题
publicstaticvoidmain(字符串[]args)引发异常{//beginmain
//申报文书
弦乐【】乐器;
//创建仪器阵列
instruments=createInstrumentArray();
//打印仪器阵列
打印仪器阵列(仪器);
}//端干管
//创建一个仪器对象数组
公共静态弦乐器[]createInstrumentArray(){//begin方法
弦乐器[]乐器=新弦乐器[10];
//将随机整数输入数组的循环
对于(int i=0;i
对于第一个问题,需要将args作为参数从main传递到printInstrumentArray。args仅对main可见
至于第二个问题,问题是您有一个声明为public的函数(意味着外部类可以使用它)返回对声明为private的类实例的引用(意味着外部类不能使用它)。这是一个矛盾。将StringInstrument设置为公共或将createInstrumentArray设置为私有。谢谢,它解决了第二个问题,。然而,当你说传给梅因时,你到底是什么意思?抱歉,我是Java新手。您需要将args添加到rintInstrumentArray的参数列表中,使其如下所示:
public static void printInstrumentArray(stringInstruments[],String args[])抛出异常{
,然后将调用它的行更改为:printInstrumentArray(instruments,args);
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