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



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

设计一个名为Person的类,其中包含用于保存人名的字段、地址和电话号码(均为字符串)。编写构造函数初始化所有这些值,以及赋值函数和访问器方法。

接下来,设计一个名为Customer的类,该类继承自Person班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());
    }
}

您需要有一个public类,它包含公共静态主方法(在您的案例中,是demo)。文件名应该与公共类(在您的例子中是demo.java)相同。其他类可以保持它们的原样(实际上它们具有包默认访问权限)。

正如其他人也指出的那样,您最好遵循命名约定将类名也更改为Demo。

想象一下,你的每个类都有一个主函数,在线编译器应该如何知道哪个是入口点?

最新更新