java中数组问题,为什么输出结果是三个null?,请高中帮我改正一下!万分感谢!

import java.util.ArrayList;

class JClient
{
String arrayObj[];//声明三个数组
String arrayObj1[];
String arrayObj2[];

void give()//分别建三个数组对象,然后给三个数组分别赋值
{
String arrayObj[]=new String[5];
arrayObj[0]="Name:David Clarke";
arrayObj[1]="Street:10 Downing Street";
arrayObj[2]="City:LondonState:London";
arrayObj[3]="Country:United Kingdom";
arrayObj[4]="PinCode:110022";

String arrayObj1[]=new String[5];
arrayObj1[0]="Name:John Lenon";
arrayObj1[1]="Street:Park Avenue";
arrayObj1[2]="City:CaliforniaState:California";
arrayObj1[3]="Country:USA";
arrayObj1[4]="PinCode:210033";

String arrayObj2[]=new String[5];
arrayObj2[0]="Name:Stefii Graff";
arrayObj2[1]="Street:14 Maple Lane";
arrayObj2[2]="City:MahomaState:Sydney";
arrayObj2[3]="Country:Australia";
arrayObj2[4]="412033";
}
}
class JarrTest
{
public static void main(String [] args)
{
JClient cliObj=new JClient();
cliObj.give();

ArrayList ArrayListObj=new ArrayList();//新建ArrayList对象

ArrayListObj.add(cliObj.arrayObj);//分别JCilent类中的三个数组对象添加到ArrayList对象中
ArrayListObj.add(cliObj.arrayObj1);
ArrayListObj.add(cliObj.arrayObj2);

for(int i=0;i<ArrayListObj.size();i++)//通过ArrayList对象输出
{
System.out.println (ArrayListObj.get(i));
}
}
}
方法里面的String去掉就会出错!

public class JClient {
String arrayObj[];// 声明三个数组
String arrayObj1[];
String arrayObj2[];

public String[] getArrayObj() {
arrayObj = new String[5];
arrayObj[0] = "Name:David Clarke";
arrayObj[1] = "Street:10 Downing Street";
arrayObj[2] = "City:LondonState:London";
arrayObj[3] = "Country:United Kingdom";
arrayObj[4] = "PinCode:110022";
return arrayObj;
}

public String[] getArrayObj1() {
arrayObj1 = new String[5];
arrayObj1[0] = "Name:John Lenon";
arrayObj1[1] = "Street:Park Avenue";
arrayObj1[2] = "City:CaliforniaState:California";
arrayObj1[3] = "Country:USA";
arrayObj1[4] = "PinCode:210033";
return arrayObj1;
}

public String[] getArrayObj2() {
arrayObj2 = new String[5];
arrayObj2[0] = "Name:Stefii Graff";
arrayObj2[1] = "Street:14 Maple Lane";
arrayObj2[2] = "City:MahomaState:Sydney";
arrayObj2[3] = "Country:Australia";
arrayObj2[4] = "412033";
return arrayObj2;
}

}
public class JarrTest {
public static void main(String[] args) {
JClient cliObj = new JClient ();
//cliObj.give();

ArrayList ArrayListObj = new ArrayList();// 新建ArrayList对象

ArrayListObj.add(cliObj.getArrayObj());// 分别JCilent类中的三个数组对象添加到ArrayList对象中
ArrayListObj.add(cliObj.getArrayObj1());
ArrayListObj.add(cliObj.getArrayObj2());

for (int i = 0; i < ArrayListObj.size(); i++)// 通过ArrayList对象输出
{
String []a=(String[]) ArrayListObj.get(i);

System.out.println(ArrayListObj.get(i));//输出的是一个数组对象,即地址
for(int j=0;j<a.length;j++)
{
System.out.println(a[j]);//输出数组里面的元素
}
}
}
}

你错在上面的那个void give();他不会主动去调用。
上面定义了3个变量数组,就没有得到赋值。
在你输出的时候输出的是3个数组对象,只能输出数组对象的地址也是看不到数组里面具体的值的。
在以后你可能会常用到这样的写法把上面的3个变量数组做为类的属性。分别给他一个get和set方法。
这可能在以后你会看到称为POJO类,也叫实体类。慢慢会明白的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-07-09
上面已经定义全局变量了,String arrayObj[]; 在类里面就别String arrayObj了,直接 arrayObj1[]=new String[5]; 就行了
第2个回答  2008-07-09
因为你的give()方法并没有对你的JClient类的全局数组变量初始化,而只是对方法内部的局部数组变量初始化,不该在give()内重新申明和全局变量一样的数组名,这样会覆盖。

这样修改就可以了。
String arrayObj[]=new String[5];
改成:
arrayObj=new String[5];
其他的以此类推

你要把方括号和String一起去掉