1

次のような2つのフィールドを持つJavaのクラスがあります

Class A
{
  int i;
  double v;
}

クラス A のオブジェクトの配列を次のように作成します。

A[] x = new A[3];

メモリをオブジェクトに割り当てた後、次のように値をオブジェクトに割り当てます。

A[0].i = 1;
A[0].v = 2.5;
A[1].i = 2;
A[1].v = 3.5;
A[2].i = 55;
A[2].v = 1.5;

オブジェクト値を初期化するためのより良い方法があると思っていました。

4

5 に答える 5

2
public class A {
int i;
double v;

public A(int ii, double dd) {
    i = ii;
    v = dd;
}

public static void main(String[] args) {

    A[] a = new A[10]; // size
    for (int i = 0; i < a.length; i++) {
        a[i] = new A(1, 1.0);

    }

}
}

You can also fill elements by this way:

A[] a = new A[] { new A(1, 2.5), new A(2, 3.5), new A(55, 1.5) };
于 2013-02-08T07:35:56.703 に答える
1

はい:コンストラクターを使用します:

A[] x = new A[]{new A(1, 2.5), ... };

更新:書き込み。以下にコメントする:

// Fake constructor
public static A new_A(int i, double v) {
    A x = new A();
    x.i = i;
    x.v = v;
    return x;
}

A[] x = new A[]{new_A(1, 2.5), ... };
于 2013-02-08T07:41:30.253 に答える
0
Class A
{
  private int i;
  private double v;

 void setI(int i){
  this.i =i;
}
void setV(double v){
  this.v =v;
}
}

After that assign values like A[0].setI(1);Also provide getters for the variables.

于 2013-02-08T07:37:01.823 に答える
0

セッター\ゲッターとコンストラクターを探します。

class A {
        int i;
        double v;

        public A(int i, double v) {
            super();
            this.i = i;
            this.v = v;
        }

        public int getI() {
            return i;
        }

        public void setI(int i) {
            this.i = i;
        }

        public double getV() {
            return v;
        }

        public void setV(double v) {
            this.v = v;
        }

    }

そして、これらの 3 つの値で初期化する場合は、次のようにすることもできます。

A[] x = {new A(1,2.5), new A(2, 3.5), new A(55,1.5)};
于 2013-02-08T07:42:55.437 に答える
0

コードを次のように変更します

 Class A
    {
      private int i;
      private double v;
    public A(int x,double y)
    {
         i=x;
         v=y;
    }
    }
    class mainclass{
    public static void Main(String []args)
    {
          A[] x = new A[3];
          double i=1,v=2.5;
          for(int i=0;i<2;i++)
          {
             x[i]=new A(i,v);
             i+=1;
             v+=1.0;
          }
          x[3]=new A(55,1.5);
    }
于 2013-02-08T07:46:52.017 に答える