-1
 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");
     }
}

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

4

4 回答 4

2

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

for(int i=0;i<sol.length;i++){
   sol[i]=new max(aValue);
}
于 2013-08-17T03:52:28.607 回答
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 */);
}
于 2013-08-17T03:52:47.653 回答
0
max[] sol=new max[n/2+1];

只定义没有(空)内容的数组。您必须将有效max对象放入其中。喜欢

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


sol[count].buy=i++;

正在抛出 NPE

于 2013-08-17T03:53:08.267 回答
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){
于 2013-08-17T04:18:05.727 回答