2012-03-11 131 views
1

我有幾組數組。第一個數組包含項目的ID(在下面的示例中,它將是特定動物的ID)。第二個數組包含該項目的數量。分配變量到數組

public int[] animals; 
public int[] animalsQTY 

這些以下列方式使用:

animals[0] = 123; // ID for pig, for e.g. 
animalsQTY[0] = 4; // 4 pigs 

我的負荷值到這些陣列從一個MySQL數據庫,並有幾套數據,所以我不想寫相同的負載代碼一遍又一遍。

問題是,如果我沒有從數據庫加載一個值到這些字段之一中,它必須是默認值。在語言,通過引用允許傳遞變量,我就送變量進行更新,以裝載方法:

Sub LoadFromMySQL(ByVal TableName As String, ByRef UpdateA() As Integer, ByRef UpdateB() As Integer) 

當與記錄在MySQL數據庫中找到那麼只有改變所提供的陣列項目。

如果我只用了一對陣列,我會做類似的東西:

results = getMySQLresults(); 
foreach results as result 
    animals[result['slot']] = result['id']; 
    animalsQTY[result['slot']] = result['qty']; 
end foreach 

但是我有很多陣列更新。我如何將上面的僞代碼轉換爲Java函數/方法?

+5

我不完全理解你的問題。但是在像Java這樣的OO語言中,而不是幾個數組,每個數組都包含一個不同的動物字段(ID,數量等),您應該有一個包含Animal類實例的數組或集合。動物應該有一個物業ID,一個物業數量等。 – 2012-03-11 19:01:25

+0

你真的需要拿起一本基本的Java書,並閱讀它,然後再進一步與這個項目進行冒險。 – Perception 2012-03-11 19:10:20

+0

據我所知,您的問題需要對OOPS和Java Collection的使用有所瞭解。 Plz看看他們..你可以比你現在做的更好地構建你的解決方案。 – Sabya 2012-03-11 19:15:36

回答

2

Java按值傳遞引用,所以對它們引用的對象的更改將在方法外可見。如果你已經有你的數組定義,你可以簡單的寫:

void loadFromMySql(String tableName, int[] arrayA, int[] arrayB) { 
     ... code to fill the arrays ... 
    } 

那當然,如果你想在方法內部創建新的陣列將無法正常工作 - 在您需要創建一些包裝對象的話。

還略低offtopic:爲您的特定情況下,它會更好要麼使用地圖(動物的映射ID的數量)或數組或列表的

1

在面向對象的一些基本知識:

首先創建一個爲您的動物提供ID和數量字段的課程。

public class MyCustomAnimal{ 
// field variables 
    private int Id; 
    private int Qty; 

// getter and setter 
    public int getId() { 
     return this.Id; 
    } 
    public void setId(int id) { 
     this.Id = id; 
    } 
    public int getQty() { 
     return this.Qty; 
    } 
    public void setQty(int qty) { 
     this.Qty = qty; 
    } 

// constructor 
    public MyCustomAnimal(int id, int qty){ 
     this.Id = id; 
     this.Qty = qty; 
    } 
} 

然後從您的數據庫查詢中創建類型爲MyCustomAnimal的對象。

MyCustomAnimal animal = new MyCustomAnimal(123, 4); 

甚至創建一個動物物體的數組。

MyCustomAnimal[] animal = new MyCustomAnimal[3]; 
animal[0] = new MyCustomAnimal(615, 7); 
animal[1] = new MyCustomAnimal(654, 5); 
animal[2] = new MyCustomAnimal(687, 9); 
+0

據我所知,這將是更好的方法,但我一定會使用我正在處理的腳本中存在的格式。我正在嘗試重構它 - 因此使用MySQL數據加載而不是以前使用的文件處理。將它們轉換成對象是我打算在以後做的事情。 – jSherz 2012-03-11 19:57:50