我正在尝试创建一个代表一个人姓名的类,其中包含代表名字,中间名和姓的字段(也有几种方法)。
当我尝试运行代码时,收到Illegal modifier for the local class Name; only abstract or final is permitted
错误,无法找到解决此问题的方法。请帮我解决任何错误,以便我的代码执行所需(和评论)的任务。提前谢谢。
public class Name {
String first_name;
String middle_initial;
String last_name;
//constructor that accepts first name, middle initial, and last name as parameters and initializes the Name object's state with those values
public Name(String first_name, String middle_initial, String last_name) {
first_name = "John";
middle_initial = "Q.";
last_name = "Public";
}
//method to return the person's name in first name, middle initial, and last name order.
public String getNormalOrder() {
String name = first_name + " " + middle_initial + " " + last_name;
return name;
}
//method to return the person's name in reversed order: last name, first name, and middle name.
public String getReverseOrder() {
String name = last_name + ", " + first_name + " " + middle_initial;
return name;
}
//method to return the full name in first, middle, last order, in String form
public String toString() {
return first_name + " " + middle_initial + " " + last_name;
}
public static void main(String[] arg){
first_name = "John";
middle_initial = "Q.";
last_name = "Public";
getNormalOrder();
getReverseOrder();
toString();
}
}
答案 0 :(得分:0)
我建议你重新开始使用Name.java
文件。
从顶部开始,您只能拥有与其中包含的文件同名的public class
个public class Name {
}
。
Name
现在,您的字段定义很好。
但是,构造函数不应对" John Q. Public"的值进行硬编码,因为此Name
类可以表示 {{em>}的任何实例1}}。
因此,您需要使用this
分配字段,这需要"限定"您正在使用哪个变量,因为它们是相同的变量名称。 (例如,如果您在此处将String first_name
重命名为String fName
,那么first_name = fName
就可以了。
public Name(String first_name, String middle_initial, String last_name) {
this.first_name = first_name;
this.middle_initial = middle_initial;
this.last_name = last_name;
}
然后,在main
方法中,您想要创建此对象的实例。
Name name = new Name("John", "Q.", "Public");
那就是它。
但是如果你想显示这些值,那么简单地调用你的方法是不正确的,因为它需要知道哪个 Name
值来调用方法。您还需要打印返回的String值,甚至可以看到它们。
System.out.println(name.getNormalOrder());
System.out.println(name); // calls name.toString()