【问题标题】:How to move positions within an array in Java?如何在Java中移动数组中的位置?
【发布时间】:2012-10-24 21:49:51
【问题描述】:

一个简单地移动数组元素的程序。

两个变量:userInputVariableblankSpaceVariable

我有一个名为 table 的二维数组。定义为table[userInputVariable + 1][6]

我以表格的形式打印出这个数组,最左边的列用用户在程序开始时输入的任何数字编号。

然后我询问用户他们想在数组中的哪个位置输入空格。这个空白区域就像数组中所有其他信息的分隔符。

例如,如果用户在 userInputVariable 的开头输入 10,然后在空格处输入 5。打印后,数字应如下所示:

1、2、3、4、--、5、6、7、8、9、10。

我的计划是创建一个 for 循环并尝试将数组中的所有数字移回从空格变量开始的位置。

我目前有,但不工作:

for (int i = blankSpaceVariable; i < table.length - 1; i++) 
{
table[i] = table[i + 1];
}
table[blankSpaceVariable] = "--";

使用我当前的代码,数字是这样的:

1、2、3、4、6、7、8、9、10

也尝试了几种不同的方式来完成此操作,但我的 2D 数组中的其他信息并没有随着数字移动。所以我认为这种方法有望将我的 2D 数组中的所有信息向下移动,并为空白部分让路。

非常感谢所有帮助!

【问题讨论】:

  • 很好的编辑。 +1 不知道答案,但删除了早期的 cmets 现在是噪音。

标签: java arrays string multidimensional-array


【解决方案1】:

如果你想将数字移动到下一个位置,那么你应该从数组的末尾开始。

for (int i = table.length - 1; i > blankPosition; i--) {
    table[i] = table[i - 1];
}
table[blankPosition] = 99;

从您的示例中,可能需要从 blankPosition 中减去 1(您说如果 blankPosition 是 5,那么 table[4] 具有 --),但这可能会很好 before进入循环(这是为实际实现格式化数据的问题)。

也许重命名table 也是一个好主意。


真讨厌示例实现:

public class Arrays {

        public static void main(String[] args) {
                Integer blankPosition = Integer.parseInt(args[0]);
                // Using 99 instead of "--" because of array type
                int[] table = new int[]{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 99};
                printEm(table);
                for (int i = table.length - 1; i > blankPosition; i--) {
                        table[i] = table[i - 1];
                }
                table[blankPosition] = 99;
                printEm(table);
        }

        public static void printEm(int[] array) {
                for(int i = 0; i < array.length; i++) {
                        System.out.print(array[i] + " ");
                }
                System.out.println();
        }
}

让我们运行它:

$ java Arrays 5
1 2 3 4 5 6 7 8 9 10 99 
1 2 3 4 5 99 6 7 8 9 10

【讨论】:

    【解决方案2】:

    搞定了!

    由于我使用的是二维数组,因此我必须运行另一个 for 循环来遍历第二维。所以这是最终的代码。

    非常感谢@desert69

    for (int i = table.length - 1; i > startBlank; i--) 
    {
        for (int j = 0; j < table[i].length; j++) 
        {
            table[i][j] = table[i - 1][j];
        }
    }
    table[startBlank][0] =  "--";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-07
      相关资源
      最近更新 更多