2012-03-11 23 views
1

私はいくつかの配列セットを使います。最初の配列には項目のIDが含まれます(下の例では、特定の動物のIDになります)。 2番目の配列には、その項目のQTYが含まれます。配列に変数を代入する

public int[] animals; 
public int[] animalsQTY 

これらは、次のように使用されます。

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

私は同じロードを書きたくないので、私は、MySQLデータベースからこれらの配列に値をロードし、データのいくつかのセットを持っていますコードを何度も繰り返します。

問題は、データベースからこれらのフィールドのいずれかに値をロードしないと、デフォルト値でなければならないということです。関連するレコードがMySQLデータベースに見出されるときにのみ設けアレイ内のアイテムを変更

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

:参照によって変数を渡すことができた言語で、Iは、ローディング方式に更新する変数を送信することになります。

私だけアレイの1つのペアを持っていた場合、私はのようなものだろう:

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、プロパティ数などを持っている必要があります。 –

+0

このプロジェクトをさらに進める前に、基本的なJavaブックを手に入れて読む必要があります。 – Perception

+0

私が理解できる限り、あなたの問題にはOOPSとJava Collectionの使用に関するいくつかの理解が必要です。 Plzはそれらを見ている.. uは今あなたが行っているよりもはるかに良いあなたのソリューションをフレームすることができます。 – Sabya

答えて

2

Javaは参照を値で渡します。そのため、参照されるオブジェクトへの変更はメソッドの外に表示されます。あなたはすでにあなたの配列が定義されている場合は、単に書くことができます:あなたはメソッド内で新しいアレイを作成したい場合は、もちろん動作しません

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

こと - あなたは、いくつかのラッパーオブジェクトを作成する必要があり、その場合には。

またslighty 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

関連する問題