Java 如何使用数组对象?

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

假设这个类中有一个名为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[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;i
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;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 addd
y[1]之前创建为新实例=new Calc;
始终检查Java教程-它们非常宝贵:仅将类的数组声明为new()实例是不够的-数组中的每个成员都必须创建为新实例,然后才能打印addd
y[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