因此,我在类的顶部声明了一个对象数组,如下所示:
public class MyClass
{
Object[] myObjectArrray;
}
所以我在这里有两种方法:
public void method1
{
//Read from textfile into a dynamic array list
//Place data from arrayList into original array
}
public void method2
{
//do stuff with the array
}
我的问题是,由于我没有为对象数组声明固定长度,所以会遇到各种空错误。不知道如何在第一个方法中确定的类级别上设置长度。
arraylist和objectArray的声明的更详细的代码:
public void readDestinationInfo(Scanner fileScanner)
while(fileScanner.hasNext())
{
String line = fileScanner.next();
test = line.split(";|\\-");
//Loop to insert data from text-file into array
destinationList.add(new Destination(test[0], Integer.valueOf(test[1]), Integer.valueOf(test[2]), Integer.valueOf(test[3]), Integer.parseInt(test[4]), Integer.parseInt(test[5])));
}
在文本文件中没有行之后,我创建了对象数组:
Destination[] destinationArray = new Destination[destinationList.size()];
然后是循环以填充此数组:
for(int i = 0; i < destinationList.size(); i++)
{
destinationArray = (Destination[]) destinationList.toArray(new Destination[destinationList.size()]);
}
在执行此步骤后,我可以打印出该数组中包含值的信息,所以我知道这不是问题……希望
然后使用第二种方法填充另一个数组:
public String[] getDestinationNames()
{
String[] cityNames = new String[destinationArray.length];
if(destinationArray == null)
{
System.out.println("TESt");
}
//System.out.println(cityNames.length);
return cityNames;
}
当尝试使用这种方法进行操作时,我会遇到“找不到此符号”的情况
答案 0 :(得分:0)
在这种情况下,您不需要使用长度初始化数组。
您可以简单地调用.toArray()方法。并且,由于您希望数组在方法内部是全局的且可见的,因此您将声明数组为静态。请记住,调用静态变量的方法也应该是静态的。像这样:
public class MyClass {
static Object[] myObjectArrray;
public static void method1() {
// Read from textfile into a dynamic array list
// Place data from arrayList into original array
myObjectArrray = arrayList.toArray();
}
public static void method2() {
// to avoid null pointer exception
if (myObjectArrray != null) {
// do stuff with the array
} else {
// do something. maybe call method1?
}
}
}
另一种方法是使用“ this”关键字。在这里,您不必声明任何静态内容。
public class MyClass {
Object[] myObjectArrray;
public void method1() {
// Read from textfile into a dynamic array list
// Place data from arrayList into original array
this.myObjectArrray = arrayList.toArray();
}
public void method2() {
// to avoid null pointer exception
if (myObjectArrray != null) {
// do stuff with the array
} else {
// do something. maybe call method1?
}
}
}
编辑:完整运行Java代码
public class Sample {
public static void main(String[] a) {
Sample s = new Sample();
s.method1();
s.method2();
}
Object[] myObjectArrray;
public void method1() {
// Read from textfile into a dynamic array list
// Place data from arrayList into original array
List<String> arrayList = new ArrayList<>();
arrayList.add("a");
arrayList.add("b");
arrayList.add("c");
arrayList.add("d");
myObjectArrray = arrayList.toArray();
}
public void method2() {
// to avoid null pointer exception
if (myObjectArrray != null) {
// do stuff with the array
System.out.println(myObjectArrray.length);
} else {
// do something. maybe call method1?
}
}
}
希望这会有所帮助。祝你好运。