Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.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,问题是我得到了这个错误 import java.util.Scanner; public class TestPerson { /** * Creates a new instance of <code>TestPerson</code>. */ public TestPerson() { } /** * @param args the command line arguments */

问题是我得到了这个错误

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

基本上,当您试图使用cm和vip时,它们不在范围之内,这是因为编译器无法找到您提到的变量。您已经在块中声明了变量。因此,在街区之外,它们并不存在。您必须在适当的位置声明变量,以便访问它们。

为什么我的答案为-1?
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();