编译错误:找不到符号

时间:2014-08-02 06:28:09

标签: java

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

}

问题是我收到了这个错误。

60: error: cannot find symbol
                r[i]=new RegMember(cm);

                                   ^   symbol:   variable cm

  location: class TestPerson

64: error: cannot find symbol
                r[i]=new RegMember(vip);

                                   ^   symbol:   variable vip

  location: class TestPerson 2 errors

2 个答案:

答案 0 :(得分:0)

试试这个:

Cmember cm=null;
 Vipmember vip=null;
if(sel==1){
            ...
           cm = new Cmember(Name,Hpnum,age,CompanyName);   
        }
        else{
            ...
           vip = new Vipmember(Name,Hpnum,age,email);
        }
        if(sel==1){
            r[i]=new RegMember(cm);

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

基本上,当您尝试使用cm和vip时,cm和vip不在范围内

答案 1 :(得分:-1)

这是因为简单的编译器无法找到你提到的变量。您已在块中声明变量。所以在街区之外他们不存在。您必须在适当的位置声明变量,以便可以访问它们。