2012-04-28 41 views
2

我想创建一个类的新实例,我想将它们命名为这样命名一类的新实例与数字

vektor1 vektor2 vektor3等等。作为一个计算源,我想使用属于for循环的i的值。这里是我正在使用的for循环

for(int i=0; i<5;i++){ 
     System.out.println ("Bitte geben sie die erste Koordinat der "+(i+1)+". Vektor ein"); 
     double k1=scan.nextDouble(); 

     System.out.println ("Bitte geben sie die zweite Koordinat der "+(i+1)+". Vektor ein"); 
     double k2=scan.nextDouble(); 

     System.out.println ("Bitte geben sie die dritte Koordinat der "+(i+1)+". Vektor ein"); 
     double k3=scan.nextDouble(); 

     vektor.add(new Vektor3Dcomparable(k1,k2,k3)); 
    } 

这里我想在将它添加到ArrayList之前命名该类的实例。我怎样才能做到这一点?

回答

0

使Vektor3Dcomparable覆盖Object.toString()返回您想要的对象名称。

@Override public String toString() { 
    return "Mein 3D Vektor Nummer " + ind; 
} 

如果要指定一个特定的名称,你就必须通过该名称(或索引号,你的情况)的构造,与你一起k1, k2, k3

final double[] k = new double[3]; 
    for (int i=0; i<5; i++) { 
    for (int j = 0; j < 3; j++) { 
     System.out.println ("Bitte geben sie die " + 
      (j == 1? "ers" : j == 2? "zwei" : "drit") + 
      "te Koordinat der "+(i+1)+". Vektor ein"); 
     k[j] = scan.nextDouble(); 
    } 
    vektor.add(new Vektor3Dcomparable(k[0], k[1], k[2], i)); 
    } 
3

您需要区分变量对象。变量有名称 - 对象通常不会。 double值肯定没有,除非你的Vektor3Dcomparable有一个特定的名字,这里没有什么可做的。

假设vector是空的事前,你已经排序关联与计数器参考 - 在这之后,你可以使用:

Vektor3Dcomparable vektor = vektor.get(2); 

例如。如果您可以更清楚地了解您想要对这些“名称”所做的事情,我们可能会提供更多帮助。

+0

其实我想要做的是给名称给对象。当我创建一个类Vektor3Dcomparable的新实例时,java会给它一个随机的名字,比如[email protected]。我想给他们的名字,因为我在for循环中创建它们,如vektor1,vektor2 ... – oderebek 2012-04-28 21:31:27

+1

@oderebek:然后,你需要添加一个字符串字段到类中,并在构造函数中传递名称。 – 2012-04-28 22:29:59