Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将代码写入输出文件,以及非公共类型错误_Java_Output_Public Method - Fatal编程技术网

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

我有两个问题,我正在处理我的创建一类弦乐器的问题。首先,要求是:

  • main代码中的输出文件名必须是命令行中指定的名称,在命令行中可以找到所需的代码。按照要求中的规定,测试类必须以命令行中的参数启动:
  • java Mynamep3tst myfilename.txt此处myfilename.txt是所有输出必须放在其中的文件。该文件名应在程序中使用,如下所示:

    java.io.File File=新的java.io.File(args[0])

    java.io.PrintWriter输出=新的java.io.PrintWriter(文件)

    当你有消息要发送到文件中时

    输出.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[]时,它会说“线程中的异常”main“java.lang.NullPointerException”

    下一个问题

  • 当我运行它时,它可以工作,但它会不断弹出错误“通过公共API导出非公共类型”。我曾试过在“弦乐[]乐器;”上公开发表意见。但是,它会弹出错误“非法启动操作”

    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