1

我想使用不同的变量来访问相同的数据。

即我有一个数组:

float[] vector = new float[3];

我希望数组中的每个值也有其单独的标签,即:

vector[0] == pitch;
vector[1] == yaw;
vector[2] == roll;

我想交替使用vector[] & pitch/yaw/roll。当我在两个函数之间传递所有三个值时,我想引用数组,但是当我单独访问它们时,我想将它们称为俯仰偏航和滚动。

这在Java中可能吗?

4

3 回答 3

5

这不可能按照你的意思。你不能设置pitch = 20和获取vector[0] == 20;至少,原语在 Java 中不是这样工作的。但是,您可以做的(您应该做的)是使用名为 , 等的方法创建一个名为的类,并将Vector用作内部实现细节。setPitchgetPitchfloat[3]

于 2013-07-25T20:37:37.863 回答
2

你不能用一个原始float类型和一个类型的数组来做到这一点float[]。Java 不支持作为指针或对原语的引用的变量。

但是,有一些解决方法。

首先,您可以创建自己的可变引用类型来保存浮点值。

MyFloat[] vector = new MyFloat[3] { new MyFloat(p), new MyFloat(y), new MyFloat(r) };
MyFloat pitch = vector[0];
MyFloat yaw = vector[1];
MyFloat roll = vector[2];

但是最好将数组包装在一个对象中,并使用方法通过有意义的名称而不是变量来获取成员。

public class Orientation {
  private float[] vector = new float[3];

  public float[] getArray() { return vector; }

  public pitch() { return vector[0]; }
  public yaw() { return vector[1]; }
  public roll() { return vector[2]; }

  public setPitch( float pitch ) { vector[0] = pitch; }
  public setYaw( float yaw ) { vector[1] = yaw; }
  public setRoll( float roll ) { vector[3] = roll; }
}

这让你接近 - 虽然你不能只是说pitch,你可以说o.pitch()

于 2013-07-25T21:09:17.667 回答
0

在 java 中传递原始数据类型只会将其数据的副本发送到请求的方法。如果您希望将引用传递给值(而不是副本),那么您应该使用变量的对象形式。

所以,Floatfloat. 这将使您的数字成为对象变量而不是原始数据类型。

于 2013-07-25T20:38:14.737 回答