我有一段Java代码,其中有矢量定义为Vector1, Vector2, Vector3,.....VectorN
和oldVector1, oldVector2, oldVector3,...oldVectorN
。使用对象名称作为循环中的变量
我需要编写一个遍历所有这些向量的循环,并计算Vector"i"
与oldVector"j"
的每个组合的标量乘积。
其实我知道最好的方法是用一个包含所有向量的数组替换单个向量并使用数组。
但是,我不允许触摸代码的其余部分,并且需要保留作为单独对象的矢量的定义。
我该怎么做这样的事情?
for (i = 1; i < 10; i++) {
for (j = 1 ; i < 10; j++) {
result[i][j] = dotproduct(Vector"i", oldVector"j");
}
}
基本上,有没有什么办法在Javahow中构造类似字符串的变量名,例如,例如"Vector"+i
?
这不是一个答案,但是是在哪里寻找线索。在C#中,我会用反射来做这件事。您必须使用字符串名称获取表示该属性的对象,然后调用它。这是因为java编译安全,因此不会让你直接像你在代码中那样做。 – Rob
你真正应该做的就是把这些矢量放在散列表中,并通过“vector1”键入它们......“vectorN”字符串 – amphibient
@foampile这是正确的想法,但容器错误。键入字符串的关联数组不是必需的。这是一个具有整数指数的传统数组。 –