Java错误:无法找到或加载主类未定义

时间:2015-11-09 03:21:13

标签: java eclipse class

问题如下。我正在为一个名为" myprogramminglab"的在线编程网站做作业。它要求我做以下练习:

  

设计一个名为Person的类,其中包含用于保存人名的字段   ,地址和电话号码(全部为字符串)。写一个构造函数   初始化所有这些值,以及mutator和accessor   每个领域的方法。

     

接下来,设计一个名为Customer的类,它继承自Person   上课。 Customer类应该有一个String字段   客户编号和表示客户是否的布尔字段   希望成为邮件列表。编写一个初始化的构造函数   这些值以及适当的mutator和accessor方法   班级的领域。

     

在提示用户的程序中演示Customer类   输入客户姓名,地址,电话号码和的值   客户编号,然后询问用户是否是客户   想要收到邮件。使用此信息创建客户   对象,然后打印其信息。

     

将所有类放在同一个文件中。为此,请不要声明   他们公开。

     

相反,只需写下:

class  Person { ... }
class  Customer { ... }

但是,我首先在Eclipse中完成了该程序。我通常会将每个类放在一个单独的文件中。在我这样做之后,我将每个班级移动到我应该上传的网站。我删除了" public"根据问题的关键字,以便我能够上传它。当我这样做时,它没有给我任何结果。就像它甚至不运行程序一样。它编译,但它什么也没做。 我检查了一个在线java编译器,并提示以下内容:

错误:无法找到或加载主类未定义

可能是什么错误,我应该如何解决?

这是我的代码:

import java.util.Scanner;
class Person {

    private String name;
    private String address;
    private String number;

    public Person(String name, String address, String number) {
        super();
        this.name = name;
        this.address = address;
        this.number = number;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }

}


class Customer extends Person {

    private String num;
    private boolean wants;

        // TODO Auto-generated constructor stub
    public Customer(String name, String address, String number, String num, boolean wants) {
        super(name, address, number);
        this.num = num;
        this.wants = wants;
    }

    public String getNum() {
        return num;
    }

    public void setNum(String num) {
        this.num = num;
    }

    public boolean isWants() {
        return wants;
    }

    public void setWants(boolean wants) {
        this.wants = wants;
    }

}


class demo {

    public static void main(String[] args) {

        String name, address, number;
        String num;
        String decide;
        boolean wants;

        Scanner get = new Scanner(System.in);

        System.out.println("Enter name of customer: ");
        name = get.nextLine();
        System.out.println("Enter address of customer: ");
        address = get.nextLine();
        System.out.println("Enter phone number of customer: ");
        number = get.nextLine();
        System.out.println("Enter customer number: ");
        num = get.nextLine();
        System.out.println("Enter yes/no -- does the customer want to recieve·mail?: ");
        decide = get.nextLine();
        if (decide.equals("yes"))
            wants = true;
        else
            wants = false;

        Customer one = new Customer(name, address, number, num, wants);
        System.out.println("Customer: ");
        System.out.println("Name: " + one.getName());
        System.out.println("Address: " + one.getAddress());
        System.out.println("Phone Number: " + one.getNumber());
        System.out.println("Receive Mail?: " + one.isWants());
    }
}

2 个答案:

答案 0 :(得分:1)

你需要有一个公共类,其中包含public static main方法(在你的例子中,demo)。并且文件名应该与公共类相同(在您的情况下,demo.java)其他类可以保持它们(实际上它们具有包默认访问)。

由于其他人也很兴奋,你最好遵循命名惯例,将类名更改为Demo。

答案 1 :(得分:0)

想象一下,你的每个类都有一个主要功能,在线编译器应该如何知道哪个进入点?