2013-08-17 308 views
-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"); 
    } 
} 

甲异常即将其在线程异常“主”显示java.lang.NullPointerException 在MaxProfit.stock(MaxProfit.java:15) 在MaxProfit.main(MaxProfit.java:32 )
我无法解决这个问题我已经初始化了max数组仍然是空指针异常请帮助类阵列的初始化

+0

你是故意去掉'{'和''}在while循环后? – Jetti

回答

2

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

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

不,它不工作。 – user2665256

+0

@ user2665256此代码应该低于max [] sol = new max [n/2 + 1];而不是一个值你应该给一个整数。 –

+0

哦,thnx非常感激thnku。 – user2665256

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 */); 
} 
+0

对不起,但我无法理解这是给非法开始表达 sol [i] = new max(i);我想要那个sol [count] .buy = i ++其中count = 0 – user2665256

+0

试试这个:'sol [i] = new max(i);' – morgano

+0

不,它不工作 – user2665256

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

只定义和数组:只需添加这初始化数组。您必须在其中放置有效的max对象。像

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


sol[count].buy=i++; 

被抛出NPE

+0

不,它不起作用。 – user2665256

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){