问题如下。我正在为一个名为"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。
想象一下,你的每个类都有一个主函数,在线编译器应该如何知道哪个是入口点?