2015-09-27 130 views
2

我想在2D數組中獲取用戶輸入。如果可能,我不想使用java.util.Arrays填充Java 2D數組輸入

用戶輸入看起來像這樣,第一個整數是數字,第二個整數的索引。

3 3 
1 2 
3 2 

這是我得到

[3,3,1][2,3,2][][][][] 

這是我想獲得

[][1,3][3][][][] 

int x = sc.nextInt(); 
int array[][] = new int[6][x]; 

for (int i = 0; i < x; i++){ 
    for (int j = 0; j < x; j++) { 
     array[i][j] = sc.nextInt(); 
    } 
} 

System.out.println(Arrays.deepToString(array)); 
+5

輸入和輸出之間的邏輯是什麼? –

+0

第一個int是數字,int的第二個索引。 – OhOkay

回答

0

我希望你的意思是格式:

number index_to_add 

這並不簡單,因爲你不知道,在開始時會有多少個數字在數組中。

我會用一個集合像ArrayList

如果你真的想用剛剛數組,你必須有一個上限。

ArrayList的版本:

ArrayList<Integer>[] list = new ArrayList<Integer>[6]; 

//init 
for(int i=0;i<list.length;i++){ 
    list[i] = new ArrayList<Integer>(); 
} 

//fill 
while(sc.hasNextInt()){ 
    int number = sc.nextInt(); 
    if(sc.hasNextInt()){ 
     int index_to_add = sc.nextInt(); 
     list[index_to_add].add(number); 
    }else{ 
     break; 
    } 
} 

注:代碼沒有測試;

+1

謝謝你的回答,我已經有一個數組完成和工作的版本。我只是想知道沒有它們是否可能。我想我會使用它們。 – OhOkay

+0

如果你想使用數組,你必須知道,每個子數組中會插入多少個數字。然後,你必須有另一個數組(1D),其中將存儲最後一次插入的索引 - 你必須知道你將在哪個索引中放置整數。這不是太美好。在這種情況下收藏品會更好。回答你的問題「沒有他們可以做嗎?」。我的回答:當然是,但它會重新發明輪子 - 你會自己實現LinkedList或類似的東西:P @OhOkay – maskacovnik

-1
int x = sc.nextInt(); 

int array[][] = new int[2][x]; 


for (int i = 0; i < array.length; i++){ 

    for (int j = 0; j <array[0].length; j++) { 
     array[i][j] = sc.nextInt(); 
    } 
} 


System.out.println(Arrays.deepToString(array)); 
+0

這只是填充數組,OP想要將整數放到特定位置 – maskacovnik