0

私はプログラミングが初めてで、Names というクラスを作成する割り当てがあります。私のメイン メソッドでは、名前全体を読み取り、それを 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

1 つには、コンストラクターが逆です。これを行う:

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

最初に文字列をコンストラクタ Names(String first, String middle, String last) に渡そうとしたときの #60 行目

投稿されたコードにコンパイル時エラーは表示されませんが、コードは次のようになります。

    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 に答える