如何自定义类型---简单问题?(10分)

  • 主题发起人 WTO_LOVER
  • 开始时间
W

WTO_LOVER

Unregistered / Unconfirmed
GUEST, unregistred user!
我想定义一个类型为Vector ,但是他的每一项为一个字符数组类型;
如何解决,我不会定义一个类把;
其它解决方法也行?
 
import java.util.*;
public class Str {
static String[] str1={"aaa","bbb"};
static String[] str2={"ccc","ddd"};
static String[] str3={"eee","fff"};
public static void main(String agrs[]){
Vector aaa=new Vector();
aaa.add(str1);
aaa.add(str2);
aaa.add(str3);
}
}
在java的Vector中可以容乃所有对象,当然也就可以容乃字符数组了。
 
thank you very much ;
 
不好意思,我的程序还是无法------?
public class testVector {
private Vector vectA=new Vector(10);
public void SetVector()
{String[] strArray=new String[3];
System.out.println("begin
to WRITE");
for(int i=0;i<10;i++)
{ for(int j=0;j<3;j++)
strArray[j]=Integer.toString(i);
System.out.println(i+"/t"+strArray[0]+"/t"+strArray[1]+"/t"+strArray[2]) ;
vectA.add(strArray);

}
}
public void PrintVector()
{System.out.println("begin
to READ---------");
for(int i=0;i<vectA.size();i++)
{ String[] str=new String[3];
System.arraycopy((String[])vectA.elementAt(i),0,str,0,3);
System.out.println(i+"/t"+str[0]+"/t"+str[1]+"/t"+str[2]);
}
}
public testVector() {
}
public static void main(String[] args)
{testVector tesV=new testVector();
tesV.SetVector() ;
tesV.PrintVector() ;
}
}
我的两次输出为什么不一样,是不是和数组的传递有关,?我真他吗的菜!!!
输出为:
begin
to WRITE
0000
1111
2222
3333
4444
5555
6666
7777
8888
9999
begin
to READ---------
0999
1999
2999
3999
4999
5999
6999
7999
8999
9999
 
改成这样就行了。
public void SetVector()
{
System.out.println("begin
to WRITE");
for(int i=0;i<10;i++)
{
String[] strArray=new String[3];

for(int j=0;j<3;j++)
strArray[j]=Integer.toString(i);
System.out.println(i+"/t"+strArray[0]+"/t"+strArray[1]+"/t"+strArray[2]) ;
vectA.add(strArray);

}
}
 
Thanks;
为什么这样啊?
String[] strArray=new String[3];的位置这么重要;
我的基础太不行了,这有什么道理吗?
让我死个明白,leozmy
 
书里讲的:
创建一个对象
- 原始类型的声明可分配存储器空间
- 非原始类型的声明不分配存储器空间
- 声明的变量不是数据本身, 而是数据的引用(或指针)
vectA中保存的是strArray数组的地址,
你写的程序中vectA每一项都指向同一个strArray,
所以就会有这种结果了。
 
顶部