我是Java的新手,我在使用数组移动对象时遇到了一些麻烦。问题是:假设X
中有m[i][j]
个对象,m[i][j+1]
中有Y对象。我想要的是将X
移至m[i][j+1]
,在该位置显示X
,然后将其移至m[i][j+2]
,并使Y
对象显示回来它原来的位置。有任何想法吗?
答案 0 :(得分:0)
final Object underScoreObjectWhateverThatIs = null;
final Object o1 = new Integer(1);
final Object o2 = new Integer(2);
final Object o3 = new Integer(3);
final Object o4 = new Integer(4);
final Object[][] m = new Object[][]{new Object[]{null, o1}, new Object[]{o1, o2, o3, o4}};
final int i = 1;
final int j = 1;
//Test vars set up
//Going for step 1;
m[i][j + 2] = underScoreObjectWhateverThatIs;
//We now have step one
Object X = m[i][j];
Object Y = m[i][j + 1];
m[i][j] = underScoreObjectWhateverThatIs;
m[i][j + 1] = X;
//We now have step 2
m[i][j + 1] = Y;
m[i][j + 2] = X;
//We now have step 3
// (X was o2, and Y was o3 here if that is unclear)
这是我对你所描述内容的最佳解释。这是java代码,但它尖叫说这里有一些不好的想法。出于某种原因,我们有Object数组的数组,如果原因不是很好,我们应该重新考虑编写一些类或使用Lists / Collections或其他东西。你真的想做什么?我们为什么要搞乱阵列?
答案 1 :(得分:0)
听起来你有效地处理了两个层......它不仅仅是简单的数组操作。您正在描述一个状态,其中X可以位于同一空间中的Y前面。
你有很多选择。你可以有一个X数组和一个Y数组。当你遍历元素时,你测试X是否存在然后打印它,否则打印Y数组中的任何内容。如果X只是一个字符,它甚至可以用一个整数变量表示。将数组视为仅包含Y或下划线,但是当您在其元素中循环时,如果您在第X个元素上,则打印" X"而不是Y数组中的元素。