运行时错误(NZEC)

时间:2012-07-15 20:22:58

标签: java

我编写了以下代码,它在我的电脑上工作得很好,但在Codechef上给出了NZEC类型的运行时错误:

import java.io.*;

class Main {
public static void main(String args[]) throws IOException {
    BufferedReader o = new BufferedReader(new InputStreamReader(System.in));
    int n = Integer.parseInt(o.readLine());       //Total videos
    int s[] = new int[n];
    int e[] = new int[n];
    int c=0, i=0;
    for(i=0;i<n;i++)            //Start and end times
    {
        s[i] = Integer.parseInt(o.readLine());           
        e[i] = Integer.parseInt(o.readLine());
    }
    int q = Integer.parseInt(o.readLine()); //No. of groups
    String st = new String();
    int noa = 0 , j = 0 , k = 0, z = 0;
    int count[] = new int[q];    //No. of videos of each group
    for(i=0;i<q;i++)
    {
        int marked[] = new int[n];
        st = o.readLine();
        String temp[] = st.split(" ");
        noa = Integer.parseInt(temp[0]);
        double toa[] = new double[noa];
        for(j=0;j<noa;j++)                   //Do for every alien of ith group
        {
            toa[j] = Double.parseDouble(temp[j+1]);    
            for(k=0;k<n;k++)                //Check for every video
            {
                if(toa[j]>=s[k]&&toa[j]<=e[k]&&marked[k]!=-1)
                {
                    z++;
                    marked[k] = -1;
                }
            }
        }

        count[i] = z;
        z = 0;
    }
    for(i=0;i<q;i++)
        System.out.println(count[i]);
}
}

有人可以帮我解决这个问题吗? 如果由于使用split()方法而导致错误,我怎么不在我的电脑上出错?

1 个答案:

答案 0 :(得分:1)

您的代码非常不安全,一旦输入不完全符合预期,很可能会崩溃 - 以下是一些示例:

  • 在没有异常处理的情况下继续调用Integer.parseInt() =不检查调用是否成功
  • 使用已解析的整数创建数组,而不检查它们是否可接受(您希望它们至少是正数,可能不是太大)
  • 您尝试访问temp[j+1]而未检查临时文件的长度是否至少为j+2

另外,作为一般性评论,你应该尝试使用有意义的变量来使你的代码更具可读性 - 我认为没有人能猜出n,s,e,c,i,noa,st,toa是什么。 ..