让这个类中有一个名为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显示提示:使用数组进行不平衡读/写
我不知道什么是错的! 感谢...
答案 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();
}