2012-03-11 124 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