Java错误:Exception in thread "main" java.lang.NullPointerException
写了一个Java程序可是没办法运行;代码如下:packagehellojava11;publicclassMaxextendsOutClass{publicstaticv...
写了一个Java程序可是没办法运行;
代码如下:
package hellojava11;
public class Max extends OutClass{
public static void main(String[] args){
double[] arr={34,66,12,45,33,678,2,44,6};
OutClass example = new OutClass();
example.outmethod();
}
}
class OutClass{
public void outmethod(){
InnerClass o = new InnerClass();
o.zuida(); //System.out.println(o.temp);
}
class InnerClass {
double[] arr;
public void zuida(){
double temp=arr[0];
for(int i=0;i<arr.length-1;i++){
if(temp < arr[i]){
temp=arr[i];
}
}
System.out.println(temp);
}
}
}
感觉好像是指针指到了null,但是不知道为什么会这样,真诚求教 展开
代码如下:
package hellojava11;
public class Max extends OutClass{
public static void main(String[] args){
double[] arr={34,66,12,45,33,678,2,44,6};
OutClass example = new OutClass();
example.outmethod();
}
}
class OutClass{
public void outmethod(){
InnerClass o = new InnerClass();
o.zuida(); //System.out.println(o.temp);
}
class InnerClass {
double[] arr;
public void zuida(){
double temp=arr[0];
for(int i=0;i<arr.length-1;i++){
if(temp < arr[i]){
temp=arr[i];
}
}
System.out.println(temp);
}
}
}
感觉好像是指针指到了null,但是不知道为什么会这样,真诚求教 展开
1个回答
展开全部
最终就是运行下面语句中的zuida方法:
double[] arr;
public void zuida(){
double temp=arr[0];
for(int i=0;i<arr.length-1;i++){
if(temp < arr[i]){
temp=arr[i];
}
}
System.out.println(temp);
}
这个for循环中的arr就是InnerClass这个类的全局变量,上面声明的那个double[] arr;
因为没有初始化,所以此时arr=null,所以进行arr.length报空指针异常。
double[] arr={34,66,12,45,33,678,2,44,6};这个语句应该写在InnerClass里覆盖掉double[] arr;
更多追问追答
追问
是这样的,我想定义一个内部类;一个外部类;一个和外部类同等地位的类,让这个类继承了外部类。然后将数组赋值在这个和外部类同等地位的类里面,调用内部类里面的方法,但是现在完全懵了,请问能指教下怎么改吗?
追答
class OutClass {这行后面添加:
//arr数组为OutClass的全局变量,也能在InnerClass中直接引用
public static double[] arr;
去掉最开始的double[] arr={34,66,12,45,33,678,2,44,6};
arr数组在main函数中赋值,OutClass example = new OutClass();后面添加:
//注:如果上面arr没有声明为static的话,需要example.arr=....
arr = new double[]{34, 66, 12, 45, 33, 678, 2, 44, 6};
最后,去掉InnerClass类中的double[] arr;
总的来说就是
public class Max extends OutClass {
public static void main(String[] args) {
OutClass example = new OutClass();
arr = new double[]{34, 66, 12, 45, 33, 678, 2, 44, 6};
example.outmethod();
}
}
class OutClass {
public static double[] arr;
public void outmethod() {
InnerClass o = new InnerClass();
o.zuida();
}
class InnerClass {
public void zuida() {
double temp = arr[0];
for (int i = 0; i < arr.length - 1; i++) {
if (temp < arr[i]) {
temp = arr[i];
}
}
System.out.println(temp);
}
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询