Yik Hern
Yik Hern

Reputation: 1

Compiler error - Can not find symbol

this is my code

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);
}

}

This is the main class

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());
}

}

This is the problem i facing..

error: constructor RegMember in class RegMember cannot be applied to given types;

            r[i]=new RegMember(cm);

                 ^

required: Cmember,Vipmember,Clubs

found: Cmember

reason: actual and formal argument lists differ in length

error: constructor RegMember in class RegMember cannot be applied to given types;

            r[i]=new RegMember(vip);

                 ^

required: Cmember,Vipmember,Clubs

found: Vipmember

reason: actual and formal argument lists differ in length

2 errors

Upvotes: 0

Views: 73

Answers (2)

Shlublu
Shlublu

Reputation: 11027

RegMember has no constructor that takes a single Cmember as a parameter. This is why new new RegMember(cm) doesn't compile.

Similarly, it has no constructor that takes a single Vipmember. So new RegMember(vip) fails to compile too.

Upvotes: 1

Aniket Thakur
Aniket Thakur

Reputation: 69035

You have constructor

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

    this.vipmember=vipmember;
    this.cmember=cmember;
    this.clubs=clubs;
    regno=++nextNo;
}

So you cannot call

r[i]=new RegMember(cm);

That is with just one argument Cmember . Either define constructor

public RegMember(Cmember cmember) {
}

or use your existing constructor to create new instances.

Upvotes: 1

Related Questions