类数组的初始化

时间:2013-08-17 03:47:59

标签: java

 class max{
     public int buy;
     public int sell;
     public max(int n){
         buy=0;
         sell=0;
     }
 }

public class MaxProfit{     
    public void stock(int a[],int n){
        max[] sol=new max[n/2+1];
        if(n==1||n==0)
        {
            return;
        }
    int i=0,count=0;
    while(i<n-1){
        while((i<n-1)&&(a[i+1]<=a[i]))
        i++;
        if(i==n-1)
        break;
        //System.out.println(sol[count].buy=i++);
        sol[count].buy=i++;
        i++;
        while((i<n)&&(a[i]>=a[i-1]))
        i++;
        sol[count].sell=i-1;
        count++;

    }
    for(int k=0;k<count;k++)
    System.out.println(sol[k].buy +sol[k].sell);


}

     public static void main(String []args){
         MaxProfit f=new MaxProfit();
        int arr[]={20,100,260};
        f.stock(arr,arr.length);

        System.out.println("Hello World");
     }
}

异常即将到来,这是线程“main”java.lang.NullPointerException中的异常     在MaxProfit.stock(MaxProfit.java:15)     在MaxProfit.main(MaxProfit.java:32)
我无法解决这个问题我已经初始化了max的数组我仍然得到空指针异常请帮忙

4 个答案:

答案 0 :(得分:2)

您应该在循环中初始化max[] sol的元素。

for(int i=0;i<sol.length;i++){
   sol[i]=new max(aValue);
}

答案 1 :(得分:0)

您正在声明一个数组(sol),但您没有用对象max填充数组。在使用数组之前先填充它。只需添加此项即可初始化数组:

max[] sol=new max[n/2+1];

for(int i = 0; i < sol.length; i++) {
    sol[i] = new max(i /* or whatever the value that must be here */);
}

答案 2 :(得分:0)

max[] sol=new max[n/2+1];

只定义没有(null)内容的数组。您必须在其中放置有效的max个对象。喜欢

max[i] = new max(/*param*/);


sol[count].buy=i++;

投掷NPE

答案 3 :(得分:0)

   public void stock(int a[],int n){
   max[] sol=new max[n/2+1];
   if(n==1||n==0)
   {
        return;
   }
   for (int k = 0; k < sol.length; k++) {
       sol[k]= new max(k);
   }
   int i=0,count=0;
   while(i<n-1){