我编写了以下代码,它在我的电脑上工作得很好,但在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()
方法而导致错误,我怎么不在我的电脑上出错?
答案 0 :(得分:1)
您的代码非常不安全,一旦输入不完全符合预期,很可能会崩溃 - 以下是一些示例:
Integer.parseInt()
=不检查调用是否成功temp[j+1]
而未检查临时文件的长度是否至少为j+2
。另外,作为一般性评论,你应该尝试使用有意义的变量来使你的代码更具可读性 - 我认为没有人能猜出n,s,e,c,i,noa,st,toa是什么。 ..