【问题标题】:Moving an object in an array in Java?在Java中移动数组中的对象?
【发布时间】:2012-04-27 22:12:31
【问题描述】:

我是 Java 新手,在数组中移动对象时遇到了一些问题;问题是:假设您在m[i][j] 中有一个X 对象,在m[i][j+1] 中有一个Y 对象。我想要的是将X 移动到m[i][j+1],在该位置显示X,然后将其移动到m[i][j+2],并使Y 对象回到原来的位置。有什么想法吗?

编辑:

  • 第 1 步应显示:X Y _
  • 第 2 步:_ X _
  • 第 3 步:_ Y X

【问题讨论】:

  • “在那个位置显示 X”是什么意思?每次移动后是否需要打印数组?第一步后 Y 去哪儿了?
  • 您应该为 X 创建一个临时存储,然后将 Y 移动到 X 的位置,然后将 X 移动到 Y 的旧位置。
  • @Louis Wasserman 我尝试将 X 的 m[i][j] 移动到 m[i][j+1] 并在 X 的初始 m[i][j 中创建一个新的“_” ],但我似乎无法弄清楚如何知道新 X 的位置有一个 Y。
  • @Vash 我将如何创建临时存储?你的意思是像一个新变量?
  • 新变量应该可以解决问题。

标签: java arrays object move


【解决方案1】:
    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 代码,但它尖叫着这里有一些不好的想法。出于某种原因,我们有对象数组的数组,如果原因不是很好,我们可能应该重新考虑编写一些类或使用列表/集合或其他东西。你真正想做什么?我们为什么要搞乱数组?

【讨论】:

    【解决方案2】:

    听起来您正在有效地处理两层......这不仅仅是简单的数组操作。您正在描述一种状态,即 X 可以在同一空间中位于 Y 前面。

    你有很多选择。你可以有一个 X 的数组和一个 Y 的数组。当你循环遍历元素时,你测试 X 是否存在然后打印它,否则打​​印 Y 数组中的任何内容。如果 X 只是一个字符,它甚至可以用一个整数变量来表示。将数组视为仅包含 Y 或下划线,但当您循环其元素时,如果您在第 X 个元素上,则打印“X”而不是 Y 数组中的元素。

    【讨论】:

    • 另外,考虑一下您最近在课堂上学到的知识,因为您的老师希望建立在先前的概念基础上。如果您的重点是字符串操作,那么您可能打算存储“XY”并仅显示 X。如果它是位掩码,那么您可以采用这种方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-11
    • 2022-11-12
    • 2018-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多