我读了一个.ini文件并将每个属性放入一个临时数组中,我把它放在一个向量中 - 直到这里它工作正常.
但是,如果我想访问该向量中的每个数组,我总是得到相同的结果,这是不可能的.我尝试了不同的方式,不同的循环和一切不同,但总是相同的结果,这是我的实际代码:
tmp2 = new String[2];
for(Enumeration e=allPropertys.elements(); e.hasMoreElements();) {
tmp2 = (String[])e.nextElement();
for(int i = 0; i < tmp2.length; i++)
{
System.out.println(tmp2[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
以下是我将所有内容放入向量的代码:
try {
tmp = new String[2];
prop = new Properties();
prop.load(new FileReader("konfig.ini"));
Enumeration e = prop.propertyNames();
while (e.hasMoreElements()) {
String key = (String)e.nextElement();
String value = prop.getProperty( key );
tmp[0] = key + " " + value;
tmp[1] = value;
System.out.println("Property: " + tmp[0] + " und Value: " + tmp[1]);
allPropertys.add(tmp);
}
}
Run Code Online (Sandbox Code Playgroud)
我的猜测是,当你填充向量时,你会为每个属性重用相同的字符串数组.这使得向量包含10次(10为条目数)相同的数组:
String[] property = new String[2];
for (every line in the file) {
property[0] = ...;
property[1] = ...;
vector.add(property);
}
Run Code Online (Sandbox Code Playgroud)
这应该被替换为
for (every line in the file) {
String[] property = new String[2];
property[0] = ...;
property[1] = ...;
vector.add(property);
}
Run Code Online (Sandbox Code Playgroud)
另外,请注意在您的代码片段中,您创建一个新的String数组来初始化您的tmp2变量,然后将其值替换为向量中的值.初始化是不必要的.