3

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

两个变量:userInputVariableblankSpaceVariable

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

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

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

例如,如果用户在开头输入 10 userInputVariable,然后在空格处输入 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

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

非常感谢所有帮助!

4

2 回答 2

0

如果要将数字移动到下一个位置,则应从数组的末尾开始。

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

从您的示例中,可能需要从中减去 1 blankPosition(您说如果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
于 2012-11-05T04:10:08.433 回答
0

得到它的工作!

由于我使用的是二维数组,因此我不得不运行另一个 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] =  "--";
于 2012-11-05T04:57:49.853 回答