2017-10-08 111 views
-1

我有两个类,A和B.我在类A中有一个方法demo(),它创建一个对象数组,并使用前面的int数组获得值'v3'我将创建array1长度的'array2'。因此用参数v1,v2,v3创建array2的新对象。我在B/v1/2/3中也有一些getter/setter。然后我想访问像如何在创建方法外访问数组的方法

    System.out.print(array2[0].getValue1()); 

以外的方法或至少知道它已成功创建。但是我试图打印出一个值,所以我马上得到一个错误,所以我猜测没有toString方法会是问题。我已经创建的方法以外的变量为:

  private B[] array2; 

我然后调用主:

B array2 = new B[array1.length]; 
    demo(); 
    System.out.print(array2[0].getValue1()); 

这是方法

public void demo(){ 
     int v1= 2; 
     int v2= 2; 
     int v3= 0; 
B[] array2 = new B[array1.length]; 
for(int x = 0; x<array2.length; x++) 
{ 
    v3 = array1[x]; 





    array1[x] = new B(v1,v2,v3); 
    array1[x].setValue2(v1); 
    array1[x].setValue2(v2); 
    array1[x].setValue3(v3); 


    v1++; 
} 

} 它还看来我得重述

B[] array2 = new B[array1.length]; 
该方法中的210

或者出现错误。这看起来像一个类似的问题

+0

你得到的错误是什么? – Thilo

+0

@Thilo我在线程“main”中得到一个异常java.lang.NullPointerException –

+1

你得到的是因为'array2'的所有元素都是'null'。你有哪些代码试图更新该数组? – Thilo

回答

1

基本上你有两个B[] array2变量创建,一个外面的demo()方法和另一个里面。

由于您在demo()方法中创建了新的B[] array2变量,因此它不会更新早于demo()方法以外创建的变量。

因为这个数组(B[] array2是在外部创建的)从创建以来就没有修改过,所以当您尝试访问它内部的元素时,抛出NullpointerException。

修复:demo()方法不要再创建一个新的阵列,而不是指外面创建的。 所以在demo()方法在第4行应该是这样的。

array2 = new B[array1.length]; 

希望有所帮助。

+0

谢谢!它的工作:) –

+0

@mint_x很好。你可以通过检查答案旁边的复选标记('✔')来接受答案吗?在这里阅读这个礼节:[当有人回答我的问题时我该怎么办?](https://stackoverflow.com/help/someone-answers) –