2012-11-05 22 views
3

一个简单地移动数组元素的程序。如何在Java中移动数组中的位置?

两个变量: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

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

所有帮助非常感谢!

+0

好编辑。 +1不知道答案,但删除了以前的评论,现在是噪音。 –

回答

0

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

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

从你的榜样,它可能是necesary从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 
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] = "--"; 
相关问题