2016-11-08 13 views
-2

私は配列を入力として(とりわけ)行列を作成するクラスを作成しようとしています。この配列はレコード(Record9)に割り当てられます。しかし、コンパイルしようとするとこのエラーが発生します。あなたは以下の私のコードを見つけることができます。宿題:エラー:無効なメソッド宣言。戻り値の型が必要です

public class Matrix3x3flat { 

    private class Record9 { 
     public long r1c1; 
     public long r1c2; 
     public long r1c3; 

     public long r2c1; 
     public long r2c2; 
     public long r2c3; 

     public long r3c1; 
     public long r3c2; 
     public long r3c3; 
    } 
    private Record9 mat; 

    public Record9(long[] arr) { 
     Record9 this.mat = new Record9(); 

     this.mat.r1c1 = arr[0]; 
     this.mat.r1c2 = arr[1]; 
     this.mat.r1c3 = arr[2]; 
     this.mat.r2c1 = arr[3]; 
     this.mat.r2c2 = arr[4]; 
     this.mat.r2c3 = arr[5]; 
     this.mat.r3c1 = arr[6]; 
     this.mat.r3c2 = arr[7]; 
     this.mat.r3c3 = arr[8]; 

     return this.mat; 
    }  
} 

私は問題を理解していないが、私はそれが適切にreturn文でthis.matを参照していない私とは何かを持っている疑いがありません。

答えて

0

さて、私が気づくことはほとんどありません。編集:以下に述べるように、コンストラクタ名はクラス名と同じである必要があります。

2)なぜmatをRecord9の型として宣言し直していますか?あなたはすでにRecord9の一種として上に設定しました。もう一度定義する必要はありません。これは何でもいいと言えます。

0

私は、Record9のインスタンスをpublic Record9 long [] arr)、現在はコンストラクタのreturn文を使用していますが、これは許されません。あなたはそれをメソッドに変換する必要があります。

このようにしてみてください:

パブリッククラスMatrix3x3flat {

private class Record9 { 
    public long r1c1; 
    public long r1c2; 
    public long r1c3; 

    public long r2c1; 
    public long r2c2; 
    public long r2c3; 

    public long r3c1; 
    public long r3c2; 
    public long r3c3; 
} 
private Record9 mat; 

public Record9 instance(long[] arr) { 
    this.mat = new Record9(); 

    this.mat.r1c1 = arr[0]; 
    this.mat.r1c2 = arr[1]; 
    this.mat.r1c3 = arr[2]; 
    this.mat.r2c1 = arr[3]; 
    this.mat.r2c2 = arr[4]; 
    this.mat.r2c3 = arr[5]; 
    this.mat.r3c1 = arr[6]; 
    this.mat.r3c2 = arr[7]; 
    this.mat.r3c3 = arr[8]; 

    return this.mat; 
}  

}

関連する問題