0

我是编程新手,我有一个任务是编写一个名为 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();

    }

}
4

2 回答 2

3

一方面,您的构造函数是倒退的。做这个:

public Names(String first, String middle, String last){
    this.first = first;
    this.middle = middle;
    this.last = last;
}

this保留字总是指您正在使用的类/对象。因此,当您this.firstNames类中引用时,您指的是 Names 的第一个变量,而不是您首先命名的函数参数。

于 2012-12-07T21:55:35.017 回答
2

第 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;
    }
于 2012-12-07T22:00:48.543 回答