2012-11-05 23 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] = "--"; 
相關問題