如何在Java中移动数组中的位置?

时间:2012-11-05 03:51:31

标签: java arrays string multidimensional-array

只移动数组元素的程序。

两个变量:userInputVariableblankSpaceVariable

我有一个名为table的2D数组。定义为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数组中的所有信息都移动下来,并为空白部分让路。

非常感谢所有帮助!

2 个答案:

答案 0 :(得分:0)

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

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

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

可能重命名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

答案 1 :(得分:0)

搞定了!

由于我正在使用2D数组,因此我不得不运行另一个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] =  "--";