只移动数组元素的程序。
两个变量:userInputVariable
和blankSpaceVariable
。
我有一个名为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数组中的所有信息都移动下来,并为空白部分让路。
非常感谢所有帮助!
答案 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] = "--";