HDU4561 一直WA 不知道哪里错了 跪求提示 java版 不想直接拿答案谢谢

 package arithmetic;

import java.util.Scanner;

public class Main {
    public static int maxProduct(int[] list,int start,int end){
        int sum=0;//记录数组中-2的个数[start,end)
         if(start==end||start+1==end){
             return 0;
         }

        for(int i=start;i<end;i++){
            if(list[i]==-2) sum++;
        }

        if(sum%2==0){ 
            return end-start;}//第一种情况-2的个数是偶数,此时直接返回end-start的个数即可

        else {//一共有sum(奇数) 个 -2    减掉其中一个-2就可以了  减掉左边-2 或者右边-2 哪边短减掉哪边的
            //2 2 -2 2 2 -2 -2 2
            //               ---
            //0 1  2 3 4  5  6 7去掉6 7 即最终结果为6个连续最大
            int s=start,e=end;//肯定会存在一个-2
            for(int i=start;i<end;i++){
                if(list[i]==-2){ s=i;//从前往后数记录第一个-2 的坐标s 
                break;}
            }
            for(int i=end-1;i>=start;i--){
                if(list[i]==-2){ e=i;//从后往前数记录最后一个 -2的下坐标 e 
                break; 
                }
            }
            //比较左右两边如果需要去掉-2的长度

            //下面考虑只有一个-2的情况
            if(s==e){

                if((s-start+1)>(end-e)){
                    return s-start;
                }
                else return end-e-1;
            }


            else if((s-start+1)>(end-e)){//左边长度大于右边的话 就去掉右边最后一个-2 去掉比较短的-2
                return e-start;
            }
            else return end-s-1;//否则去掉左边的第一个-2
        }

    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner cin=new Scanner(System.in);
        int sets=cin.nextInt();
        int number;
        //int[] elements;
        for(int j=1;j<=sets;j++){
            int s=0;
            number=cin.nextInt();
            int[] elements=new int[number];
            int[] sign=new int[number+1];
            for(int i=0;i<number;i++){
                elements[i]=cin.nextInt();
                if(elements[i]==0){
                    sign[s++]=i;//将为0的数的下标记录下来    是第i+1个数
                }

            }
            sign[s]=number;//设置一个结束标志位
            int answer=0;
            int t=0;
             for(int p=0;p<=s;p++)//这个时候s= (0的个数 ) 因为我自己放进去了一个0的标识;即分开了多少个不含0的数组 
                {

                    answer=Math.max(answer,maxProduct(elements,t,sign[p])); //sign[p]是0的下坐标

                    t=sign[p]+1;     //t是下个不含0数组开始的下标 
                }
              System.out.printf("Case #%d: %d\n",j,answer);

        }

cin.close();
    }
}

我就不把代码全看完了,直接就可以了给你指出一个问题

System.out.println();
这段代码你知道是怎么写的吗
“ ”与变量之间可以用","分离吗?
至少用“+”对吧!
再重头理一理把!

t=sign[p]+1; //t是下个不含0数组开始的下标

 t = p + 1;
 sign[p]是里面的值

 否则可能会产生ArrayIndexOutOfBoundsException

数组下标不可能跳着来的,肯定会报错的