尝试整理代码,最初我正在使用这种写入数组的方法,当我不得不重复20次时这是非常长的
if (ant.getAntNumber() == 3)
{
numbers3.add(ant.getCol());
numbers3y.add(ant.getRow());
}
if (ant.getAntNumber() == 4)
{
numbers4.add(ant.getCol());
numbers4y.add(ant.getRow());
}
我尝试使用for循环来完成它,但是我无法弄清楚如何使用字符串值添加到数组中,因为它认为它是一个字符串而不是尝试使用数组
for (int j = 0; j<maxAnts; j++)
{
String str = "numbers" + j;
String str2 = "numbers" + j + "y";
//this part doesnt work
str.add(ant.getCol());
}
任何建议都会有所帮助
答案 0 :(得分:1)
这个怎么样?
Ant[] aAnt = new Ant[20];
//Fill the ant-array
int[] aColumns = new int[aAnt.length];
int[] aRows = new int[aAnt.length];
for(int i = 0; i < aAnt.length; i++) {
aColumns[i] = aAnt[i].getCol();
aRows[i] = aAnt[i].getRow();
}
或列表:
List<Integer> columnList = new List<Integer>(aAnt.length);
List<Integer> rowList = new List<Integer>(aAnt.length);
for(Ant ant : aAnt) {
columnList.add(ant.getCol());
rowList.add(ant.getRow());
}
或使用col / row对象:
class Coordinate {
public final int yCol;
public final int xRow;
public Coordinate(int y_col, int x_row) {
yCol = y_col;
xRow = x_row;
}
}
//use it with
List<Coordinate> coordinateList = new List<Coordinate>(aAnt.length);
for(Ant ant : aAnt) {
coordinateList.add(ant.getCol(), ant.getRow());
}
答案 1 :(得分:1)
在Java中,您不能使用String
对象的值来引用实际的变量名称。 Java会认为您正在尝试在add
对象上调用String
,该对象不存在并且会为您提供您所看到的编译器错误。
为避免重复,您需要将List
添加到两个可以索引的主列表中。
在你的问题中,你提到了数组,但你打电话给add
,所以我假设你真的指的是某种List
。
List<List<Integer>> numbers = new ArrayList<List<Integer>>(20);
List<List<Integer>> numbersy = new ArrayList<List<Integer>>(20);
// Add 20 ArrayList<Integer>s to each of the above lists in a loop here.
然后你可以检查ant.getAntNumber()
并将其用作主列表的索引。
int antNumber = ant.getAntNumber();
// Make sure it's within range here.
numbers.get(antNumber).add(ant.getCol());
numbersy.get(antNumber).add(ant.getRow());
答案 2 :(得分:1)
代码的直接端口是使用两个存储X和Y坐标的Map<Integer, Integer>
。从您的代码看,蚂蚁数字似乎是唯一的,即我们只需要为每个蚂蚁数存储一个X和Y值。如果您需要为每个蚂蚁编号存储多个值,请使用List<Integer>
作为Map
的值类型。
Map<Integer, Integer> numbersX = new HashMap<Integer, Integer>();
Map<Integer, Integer> numbersY = new HashMap<Integer, Integer>();
for(Ant ant : ants) {
int number = ant.getAntNumber();
numbersX.put(number, ant.getCol());
numbersY.put(number, ant.getRow());
}