【问题标题】:Compiler error - Can not find symbol编译器错误 - 找不到符号
【发布时间】:2014-08-02 09:17:34
【问题描述】:

这是我的代码

public class RegMember {

    private int regno;
    private Cmember cmember;
    private Vipmember vipmember;
    private Clubs clubs;
    private static int nextNo =1000;


public RegMember(Cmember cmember,Vipmember vipmember,Clubs clubs) {

    this.vipmember=vipmember;
    this.cmember=cmember;
    this.clubs=clubs;
    regno=++nextNo;
}
public static int getNextNo(){
    return nextNo;
}

public String toString(){
    return String.format("%-6d%-25s%-40s",regno,vipmember,cmember,clubs);
}

}

这是主类

import java.util.Scanner;
public class TestPerson {

/**
 * Creates a new instance of <code>TestPerson</code>.
 */
public TestPerson() {
}

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    // TODO code application logic here

    MemberType[] m = { new MemberType("Corporate Member"),new MemberType("VIP Member")
    };
    RegMember[] r = new RegMember[2];
    Cmember cm;
    Vipmember vip;
    Scanner s = new Scanner(System.in);
    for(int i=0;i<r.length;i++){

        System.out.println("your reg no is :"+(RegMember.getNextNo()+1));
        for(int a=0;a<m.length;a++){
            System.out.println((a+1)+". "+m[a].toString());
        }
        System.out.println("Enter Your selection:");
        int sel=s.nextInt();
        if(sel==1){
            s.nextLine(); 
            System.out.println(" enter name:");
                String Name=s.nextLine();
            System.out.println(" enter Handphone:");
                String Hpnum=s.next();
            System.out.println(" enter Age:");
                int age=s.nextInt();
            System.out.println("enter Company Name:");
                String CompanyName=s.nextLine();
            cm = new Cmember(Name,Hpnum,age,CompanyName);   
        }
        else{
            s.nextLine();
            System.out.println(" enter name:");
                String Name=s.nextLine();
            System.out.println(" enter Handphone:");
                String Hpnum=s.next();
            System.out.println(" enter Age:");
                int age=s.nextInt();
            System.out.println("enter Email:");
                String email=s.next();
            vip = new Vipmember(Name,Hpnum,age,email);
        }
        if(sel==1){
            r[i]=new RegMember(cm);

        }
        else{
            r[i]=new RegMember(vip);
        }
        s.nextLine(); 
    }

        displayInfor(r);
}
public static void displayInfor( RegMember[]r){

for(int i =0; i<r.length;i++)
System.out.println( r[i].toString());
}

}

这是我面临的问题..

error: constructor RegMember 类中的 RegMember 不能应用于给定类型;

            r[i]=new RegMember(cm);

                 ^

必填:Cmember,Vipmember,Clubs

找到:会员

原因:实际参数列表和形式参数列表的长度不同

error: constructor RegMember 类中的 RegMember 不能应用于给定类型;

            r[i]=new RegMember(vip);

                 ^

必填:Cmember,Vipmember,Clubs

找到:贵宾会员

原因:实际参数列表和形式参数列表的长度不同

2 个错误

【问题讨论】:

  • 根据您的标题,“找不到符号”是什么意思?你了解编译器错误吗?查看RegMember 中的构造函数,然后查看您是如何尝试调用它的...

标签: java compiler-errors


【解决方案1】:

RegMember 没有将单个Cmember 作为参数的构造函数。这就是 new new RegMember(cm) 无法编译的原因。

同样,它没有构造函数接受单个Vipmember。所以 new RegMember(vip) 也无法编译。

【讨论】:

    【解决方案2】:

    你有构造函数

    public RegMember(Cmember cmember,Vipmember vipmember,Clubs clubs) {
    
        this.vipmember=vipmember;
        this.cmember=cmember;
        this.clubs=clubs;
        regno=++nextNo;
    }
    

    所以你不能打电话

    r[i]=new RegMember(cm);
    

    只有一个参数 Cmember 。要么定义构造函数

    public RegMember(Cmember cmember) {
    }
    

    或使用您现有的构造函数来创建新实例。

    【讨论】:

      猜你喜欢
      • 2014-07-01
      • 2011-04-23
      • 1970-01-01
      • 1970-01-01
      • 2013-01-03
      • 1970-01-01
      • 2015-11-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多