Java 如何使用数组对象?
假设这个类中有一个名为Calc.java的类,那么这个类中有一个名为Min的方法Java 如何使用数组对象?,java,Java,假设这个类中有一个名为Calc.java的类,那么这个类中有一个名为Min的方法 public int Min(int one, int two) { return one - two ; } 现在在nemed First.java的主类中: package first; public class First { public static void main(String[] args) { Calc y [] = new Calc
public int Min(int one, int two)
{
return one - two ;
}
现在在nemed 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中的异常位于
first.first.main(first.java:9)java结果:1构建成功(总计
时间:0秒)
Netbeans显示提示:阵列的读/写不平衡
我不知道怎么了!
谢谢…
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));
}
publicstaticvoidmain(字符串[]args){
计算y[]=新计算[3];
对于(int i=0;iy[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));
}
publicstaticvoidmain(字符串[]args){
计算y[]=新计算[3];
对于(int i=0;i为什么要在那里创建一个数组?它真的需要吗?如果需要的话,在调用任何实例方法之前,需要先用Calc
对象填充该数组。
但是,您的方法似乎应该是public static
,因为Calc
类只是一个实用程序类,而Min
方法根本不与任何实例关联,而只是与该类关联。因此,对其进行修改:
public static int min(int one, int two)
然后您可以对类名调用此方法:
Calc.min(5, 3);
不需要该类有不同的实例。还可以看看具有类似实用程序方法的。您将了解我所说的内容
此外,您的min
方法似乎没有执行它应该执行的操作。例如,y[i]。min(5,3)
当前将返回2
。这不是很奇怪吗?它根本不返回传递的最小参数。您应该将return
语句更改为:
return one < two ? one : two;
返回1<2?1:2;
如果你理解这一点,你应该进一步扩展它来考虑等号。
为什么要在那里创建一个数组?真的需要吗?如果需要的话,在调用任何实例方法之前,首先需要用 Calc对象填充那个数组。
但是,您的方法似乎应该是public static
,因为Calc
类只是一个实用程序类,而Min
方法根本不与任何实例关联,而只是与该类关联。因此,对其进行修改:
public static int min(int one, int two)
然后您可以对类名调用此方法:
Calc.min(5, 3);
不需要该类有不同的实例。还可以看看具有类似实用程序方法的。您将了解我所说的内容
此外,您的min
方法似乎没有执行它应该执行的操作。例如,y[i]。min(5,3)
当前将返回2
。这不是很奇怪吗?它根本不返回传递的最小参数。您应该将return
语句更改为:
return one < two ? one : two;
返回1<2?1:2;
如果你理解这一点,你应该进一步扩展它来考虑等号。
在使用它之前必须初始化Calc对象。初始化数组本身是不够的,但是你必须初始化数组中的Calc对象:
calc[1]=new calc();
在使用calc对象之前,必须对其进行初始化。仅对数组本身进行初始化是不够的,但必须对数组中的calc对象进行如下初始化:
calc[1]=new calc();
Calc y[]=新计算[3];
对于(int i=0;i<3;i++)
{
y[i]=新计算();
}
计算y[]=新计算[3];
对于(int i=0;i<3;i++)
{
y[i]=新计算();
}
在主方法的第一行,当您执行
Calc y [] = new Calc[3];
数组的值将为
y[0]=null, y[1]=null, y[2]=null
为什么?
因为与创建整数时一样,int[]数组使用默认值(即零)初始化,同样,创建对象数组时,默认情况下使用null初始化
现在,在对数组项执行任何操作之前,必须创建对象
所以你应该这样做
y[1] = new Calc();
在调用Min方法之前
我希望这能让你明白。在你主要方法的第一行,当你正在做的时候
Calc y [] = new Calc[3];
数组的值将为
y[0]=null, y[1]=null, y[2]=null
为什么?
因为与创建整数时一样,int[]数组使用默认值(即零)初始化,同样,创建对象数组时,默认情况下使用null初始化
现在,在对数组项执行任何操作之前,必须创建对象
所以你应该这样做
y[1] = new Calc();
在调用Min方法之前
我希望这能说明问题。一定要查看Java教程-它们非常宝贵:仅将类的数组声明为new()实例是不够的-数组中的每个成员都必须在print adddy[1]之前创建为新实例=new Calc;
始终检查Java教程-它们非常宝贵:仅将类的数组声明为new()实例是不够的-数组中的每个成员都必须创建为新实例,然后才能打印adddy[1]=new Calc;
hmmmm是不是Calc y[]=new Calc[3];是指他默认初始化?还是我必须声明每个数组变量?@MohamedAnan我不理解你的问题,这里你声明y数组
存储3个计算类型的元素,但它们没有初始化,它们是null
@MohamedAnan no…y[0]y[1]y[2]从0开始..和y[0]默认情况下=null..但是如果您将基本数组设置为int[]y;那么它将在0中初始化..因为null用于对象..您可能需要读取链接iposted@MohamedAnan你没有遵循java代码惯例..对其他人来说,你很难理解你的代码HMMMM是Calc y[]=new Calc[3];是指他默认初始化?还是我必须声明每个数组变量?@MohamedAnan我不理解你的问题,这里你声明y数组
存储3个计算类型的元素,但它们没有初始化,它们是null
@MohamedAnan no…y[0]y[1]y[2]从0开始,y[0]=null b