如何使用数组对象?

时间:2013-07-14 20:11:43

标签: java

让这个类中有一个名为Calc.java的类,有一个名为Min

的方法
  public int Min(int one, int two)
    {
        return one - two ;
    }

现在在以First.java为主的主类中:

package first;
public class First {
    public static void main(String[] args) {
        Calc y [] = new Calc[3];

       System.out.println(y[1].Min(5, 3));
    }
}

运行时:

  

线程“main”中的异常java.lang.NullPointerException at   first.First.main(First.java:9)Java结果:1 BUILD SUCCESSFUL(总计   时间:0秒)

Netbeans显示提示:使用数组进行不平衡读/写

我不知道什么是错的! 感谢...

5 个答案:

答案 0 :(得分:1)

y[1]为空,您必须初始化数组:

public static void main(String[] args) {

   Calc y[] = new Calc[3];
   for(int i=0;i<y.legnth;i++){
       y[i] = new Calc();
   }
   System.out.println(y[1].Min(5, 3));
}

另外在Java方法中写入起始字母lowerCase。您可能对此链接感兴趣Arrays

答案 1 :(得分:1)

您必须在使用之前初始化calc对象。初始化数组本身是不够的,但你必须像这样初始化数组中的calc对象:

calc[1]=new calc();

答案 2 :(得分:1)

在main方法的第一行,当你在做

Calc y [] = new Calc[3];

数组的值将是

y[0]=null, y[1]=null, y[2]=null

为什么?

因为像创建整数时一样,int []使用默认值(即零)初始化数组,类似地,在创建对象数组时,默认情况下初始化为null。

现在,在对数组Item执行任何操作之前,您必须创建对象。

所以你应该这样做,

y[1] = new Calc();

在调用Min方法之前。

我希望这说清楚。

答案 3 :(得分:0)

为什么要在那里创建数组?真的需要吗?如果需要它,则需要在调用任何实例方法之前首先使用Calc对象填充该数组。

<小时/> 但是,看起来,你的方法应该是public static,因为Calc类只是一个实用程序类,并且Min方法根本不与任何实例关联,而只是与类。所以,修改它:

public static int min(int one, int two)

然后你可以在类名上调用这个方法:

Calc.min(5, 3);

无需拥有该类的不同实例。另请查看具有类似实用方法的API of Math class。你会知道我在说什么。

此外,您的min方法似乎没有做它应该做的事情。例如,y[i].Min(5, 3)目前将返回2。奇怪不是吗?它根本没有返回传递参数的最小值。您应该将return语句更改为:

return one < two ? one : two;

如果你理解这一点,你应该进一步扩展它以考虑相同的数字。

答案 4 :(得分:0)

Calc y [] = new Calc[3];
for (int i = 0; i< 3;i++)
{
    y[i] = new Calc();
}