2011-11-12 49 views
-5

我怎麼會去有關創建數組說,5個項目,然後爲每個項目一個陣列中後?我知道如何創建一個包含5個項目的數組,但是我遇到的問題是爲每個項目創建一個數組。我假設我需要5個數組,因爲有5個項目。Java數組問題

int gas = 0; 
int food = 0; 
int clothes = 0; 
int entertainment = 0; 
int electricity = 0; 
int[] budget = new int[4]; 
budget[0] = gas; 
budget[1] = food; 
budget[2] = clothes; 
budget[3] = entertainment; 
budget[4] = electricity; 

在此先感謝

+6

你是什麼意思,就是這樣,當你說「然後爲每個項目陣列後」?這聽起來好像你想要一個由你的項目控制的'ArrayList'的'HashMap'。 –

+1

爲什麼你需要每個項目的數組?你能舉一個你想要做什麼的例子嗎? –

+0

_你爲什麼要這樣做?數組和單個項目代表什麼? –

回答

0

你是說你想創建一個二維數組?預算數組中的每個元素都是另一個數組?

你會使用一個循環。

int[] budget = new int[5]; //There are 5 elements to be stored in budget, not 4 
for (int y = 0; y < 5; y++) { 
    budget[y] = new int[5]; 
} 
+1

我想你的意思是'int [] [] budget = new int [5] [];' – Bohemian

+0

你可能是對的 - 我在Java中並沒有這樣做過很長一段時間。 – Joel

0

也許你需要一個矩陣。

int[][] budget = new int[4][4]; 

在第一個索引中保留預算,在第二個索引中保留五個(在上述情況下)預算項目。 當你有一個矩陣[X] [Y]你有X + 1陣列每個Y + 1種元素的至極。

0

有陣列中的5個元素。

int[] budget = new int[5]; 
    budget[0] = gas; 
    budget[1] = food; 
    budget[2] = clothes; 
    budget[3] = entertainment; 
    budget[4] = electricity; 

需要2維數組,這基本上是陣列的陣列。 2D陣列由2對[]聲明。在下面的例子中,每個budget有10個細節。

String[][] detail = new String[budget.length][10]; 
0

如果我正確認識你,你想有一個二維數組,這將是類似...

int gas = 0; 
int food = 1; 
int clothes = 2; 
int entertainment = 3; 
int electricity = 4; 
int maxEntries = 10; 

int[][] myArray = new int[5][maxEntries]; 

這可以通過以下方式訪問:

myArray[gas][entryNumber] = 6; 
int value = myArray[gas][entryNumber]; 

但如何這是不靈活的?你必須提前多少項將有每個「類別」或有一些代碼檢查給定數組的長度,當你加入一個項目,創建一個新的數組,當你需要一個更大的一個(和複製舊的數據就知道進去)。

你可能想起碼是什麼ArrayListArrayList S:

ArrayList<ArrayList<Integer>> my2dArrayList = 
    new ArrayList<ArrayList<Integer>>(); 
... 
my2dArrayList.get(gas).add(someValue); 
int myValue = my2dArrayList.get(gas).get(index); 

ArrayList是你可以通過你的類別的名稱訪問HashMap

HashMap<String, ArrayList<Integer>> myMap = 
    new HashMap<String, ArrayList<Integer>>(); 
... 
myMap.get("gas").add(someValue); 
int myValue = myMap.get("gas").get(index); 
1

相反創建一個2維陣列保持類型邏輯上分組在一起量中的(I每月假設)倒不如定義數據保持器類,這樣就可以使用THEI訪問量r名稱而不是容易出錯的索引。

例如(減去getter和setter):

public class Budget { 
    public int gas = 0; 
    public int food = 0; 
    public int clothes = 0; 
    public int entertainment = 0; 
    public int electricity = 0; 
}; 

// .... 
Budget[] months = new Budget[12]; 

budget[0].gas = gasCosts; 
budget[0].food = foodCosts; 
// etc