Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.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 - Fatal编程技术网

Java 构造函数中的函数作为参数[尚未声明对象]

Java 构造函数中的函数作为参数[尚未声明对象],java,Java,我这里有个大问题 public class Attendant { //Max. amount = 10 public int staffNum = 10; private String[] id; private boolean available; private attNm name; /** * @param staffNum * @param strings * @param available

我这里有个大问题

public class Attendant {

    //Max. amount = 10
    public int staffNum = 10;
    private String[] id;
    private boolean available;
    private attNm name;



    /**
     * @param staffNum
     * @param strings
     * @param available
     * @param name
     */
    public Attendant(int staffNum, String[] id, boolean available, attNm name) {
        this.staffNum = staffNum;
        this.id = id;
        this.available = available;
        this.name = name;
    }


    public String[] getID(){

        String[] tempArray = new String[staffNum];

        for(int x=0; x<staffNum;x++){
            tempArray[x] = ("Att" + (x+1));
            System.out.println(tempArray[x]);
            }

        return tempArray;
        }               
}
公共类助理{
//最大金额=10
公共int staffNum=10;
私有字符串[]id;
私有布尔值可用;
私人attNm名称;
/**
*@param staffNum
*@param字符串
*@param可用
*@param name
*/
公共助理(int staffNum,String[]id,布尔值可用,attNm名称){
this.staffNum=staffNum;
this.id=id;
this.available=可用;
this.name=名称;
}
公共字符串[]getID(){
String[]tempArray=新字符串[staffNum];

对于(int x=0;x而言,有太多的事情需要处理,即:

  • 由于main()为空,您的代码将无法运行
  • 您的Attendant类不需要ID数组
  • 这是您的助理课程的外观:

    public class Attendant {
        private String id; // not an array
        // your rest of fields
    
        public Attendant(int staffNum, String id, boolean available, attNm name) {
            // modified --------------- ^^^^^^^^
        }
    
        //accessors, so on for the others
        public String getId() {
            return id;
        }
    }
    

    我认为你的主要方法是空的,但我觉得一旦你的问题得到解决,你就会在其中编写代码。所以现在继续讨论你的问题

    问题原因 您所犯的错误是,在创建对象之前,您试图从中提取一些内容,因此引用引用null,然后您希望在引用引用的对象(null)上执行方法

    解决方案 分离循环依赖项。要创建对象,需要调用
    getID()
    ,要调用
    getID()
    ,需要创建对象。 虽然有多种方法可以解决这个问题,但下面是您可以解决问题的方法之一

    在class
    Attendant.java
    中将
    getID()
    声明为
    static方法
    ,并将
    staffNum
    作为方法参数。现在您可以调用此方法而无需对象。只需将
    点运算符
    Attendant
    类名一起使用即可

    总结:

  • getID()
    声明为
    static
    并将
    staffNum
    添加为参数。
    公共静态字符串[]getID(int staffNum)

  • 修改for循环内部的代码

  • Attendant att=new Attendant(x+1,Attendant.getID(x+1),true,attNm.Emma);

    将您的getID()移动到主屏幕:

    public class Main {
    
    public static void main(String[] args) {
    
        int staffNum = 10;
        String []ids = getID(staffNum); 
        for(int x=0; x<staffNum;x++){
           Attendant att = new Attendant(x+1, ids[x], true, attNm.Emma);
        }
    }
    
    
    
    public static String[] getID(int staffNum){
    
      String[] tempArray = new String[staffNum];
    
      for(int x=0; x<staffNum;x++){
          tempArray[x] = ("Att" + (x+1));
          System.out.println(tempArray[x]);
      }
    
      return tempArray;
    }
    
    }
    }
    

    }

    非常确定您没有测试代码,这一行有语法错误:
    String[]ids=getID();
    可能是这里需要的ID,这是一个数组。请参阅下面我的答案,()希望这将有助于您了解问题的原因和可能的解决方案,这将有助于本案例和未来的其他此类场景。如果您的问题得到解决,您可以将答案标记为已接受。
    public class Main {
    
    public static void main(String[] args) {
    
        int staffNum = 10;
        String []ids = getID(staffNum); 
        for(int x=0; x<staffNum;x++){
           Attendant att = new Attendant(x+1, ids[x], true, attNm.Emma);
        }
    }
    
    
    
    public static String[] getID(int staffNum){
    
      String[] tempArray = new String[staffNum];
    
      for(int x=0; x<staffNum;x++){
          tempArray[x] = ("Att" + (x+1));
          System.out.println(tempArray[x]);
      }
    
      return tempArray;
    }
    
    }
    }
    
    public Attendant(int staffNum, String id, boolean available, attNm name) {
       this.staffNum = staffNum;
       this.id = id;
       this.available = available;
       this.name = name;