0

Motorクラスにcontructor(Motor)を作りたいのですが、Contructor1クラスで呼び出したいのですが、そうするとエラーが発生してしまいます...そしてその理由がわかりません。私はちょうど今週から Java を学んでいます。

これはコードです:

  class Motor{
        Motor(int type[]){
            int input;
            input=0;
            type = new int[4];
            for(int contor=0; contor<4; contor++){
                System.out.println("Ininsert the number of cylinders:");
                Scanner stdin = new Scanner(System.in);
                    input = stdin.nextInt();
                type[contor] = input;
                System.out.println("Motor with "+type[contor]+" cylinders.");
            }
        }
    }

    public class Contructor1 {
        public static void main(String[] args){
            Motor motor_type;
            for(int con=0; con<4; con++){
                motor_type = new Motor();
            }

            }

        }
4

4 に答える 4

7

そもそもコンストラクターにパラメーターを入れた理由は明らかではありません-あなたはそれを使用していません:

Motor(int type[]){
    int input;
    input=0;
    type = new int[4];

その最後の行では、基本的に、渡された値を上書きしています。なぜそれを行うのですか?

それを保持したい場合は、呼び出し元から渡す配列を作成する必要があります。

int[] types = new int[4];
// Populate the array here...
motor_type = new Motor(types);

現時点でのコードは少し混乱しているように見えますが、実際には、の単一のインスタンスMotorが複数の値を持つことを意図しているのですか、それとも複数のインスタンスを持つことに本当に興味がありますMotorか?

補足として、この構文は次のとおりです。

int type[]

推奨されていません。タイプ情報を1か所に保管する必要があります。

int[] type

さらに、にフィールドがないのは奇妙なことMotorであり、呼び出し元のコードで作成している値を使用することもありません。

于 2012-10-12T13:09:49.557 に答える
2

コンストラクターには type の引数がありますが、引数int[]として何も渡しません。配列を作成し、それを引数として渡す必要があります。

int[] type = new int[4];
Motor m = new Motor(type);

このコンストラクター引数は、コンストラクターで何もしないため、まったく役に立たないことに注意してください。代わりに、新しい配列で上書きします。配列引数を削除するだけです。

于 2012-10-12T13:11:50.910 に答える
1

Motorコンストラクターへの引数としてin[]を渡す必要があります。

お気に入り

 new Motor (new int[] {0,1,2,3});

クラスでパラメーター化されたコンストラクターを定義したMotorので、デフォルトでは引数なしのコンストラクターは作成されません。そのため、次の行でエラーが発生します。

 motor_type = new Motor();  // Error here , because no-arg constructor not defined. 
于 2012-10-12T13:10:30.040 に答える
0

次のことを試すことができます:

int intType[]={1,2,3}; //create some int array
Motor motor_type=new Motor(intType); //pass int array here
于 2012-10-12T13:09:52.273 に答える