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的数组我仍然得到空指针异常请帮忙
答案 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){