我是编程新手,我有一个编写名为Names的类的作业。在我的main方法中,我想读取整个名称并将其传递给我的Names构造函数。但是,在传递方法数据时,我一直遇到类型不匹配错误。我做错了什么?
import java.util.Scanner;
public class Names {
String first, middle, last;
/**
* @param args
*/
public Names(){
}
public Names(String first, String middle, String last){
first = this.first;
middle = this.middle;
last = this.last;
}
//returns the first name
public String getFirst(){
return first;
}
//returns the middle name
public String getMiddle(){
return middle;
}
//returns the last name
public String getLast(){
return last;
}
// Returns a string containing the person's full name in order,
public String firstMiddleLast(){
String ret = first + " " + middle + " " + last;
return ret;
}
public String lastFirstMiddle(){
String ret = last + ", " + first + " " + middle;
return ret;
}
public boolean equals(Names otherName){
if (first.equalsIgnoreCase(otherName.first) || middle.equalsIgnoreCase(otherName.middle)
|| last.equalsIgnoreCase(otherName.last))
return true;
else
return false;
}
public String initials(){
String retVal = first.substring(0) + "." + middle.substring(0) + "." + last.substring(0) + ".";
return retVal.toUpperCase();
}
public int length(){
String wholeName = (first+middle+last);
int retVal = wholeName.length();
return retVal;
}
public static void main(String[] args) {
Names person1 = new Names();
Names person2 = new Names();
Scanner scan = new Scanner(System.in);
System.out.println("Enter First Name: ");
person1.first = scan.next();
}
}
答案 0 :(得分:3)
首先,你的构造函数是向后的。这样做:
public Names(String first, String middle, String last){
this.first = first;
this.middle = middle;
this.last = last;
}
this
保留字总是指您正在使用的类/对象。因此,当您在this.first
类中引用Names
时,您指的是名字的第一个变量,而不是您首先命名的函数参数。
答案 1 :(得分:2)
当我尝试将String首先传递给构造函数时,第60行 Names(String first,String middle,String last)
我在发布的代码中没有看到任何编译时错误,但您的代码应该是这样的:
System.out.println("Enter First Name: ");
String firstname = scan.next();
System.out.println("Enter Middle Name: ");
String middlename = scan.next();
System.out.println("Enter Last Name: ");
String lastname = scan.next();
Names person1 =new Names(firstname, middlename, lastname);
正如其他人所说,您的构造函数声明无效。
public Names(String first, String middle, String last){
this.first = first;
this.middle = middle;
this.last = last;
}