2011-03-25 93 views
6

在SPOJ上运行以下代码时,出现运行时错误(NZEC)。如果你们中的任何人愿意指出发生了什么,我会非常感激。简单代码中的运行时错误(NZEC)

//0<=A<=B<=10^18, 1<=N<=10^18 
using System; 
class any 
{ 
static void Main() 
{ 
    long t = long.Parse(Console.ReadLine()); 
    ulong a, b, n; 

    for(long k = 0; k < t; k++) 
    { 
     string[]s = Console.ReadLine().Split(' '); 
     a = ulong.Parse(s[0]); 
     b = ulong.Parse(s[1]); 
     n = ulong.Parse(s[2]); 
     Console.WriteLine(diviEntre2(a, b, n)); 
    } 
} 
static ulong diviEntre2(ulong f, ulong c, ulong n) 
{ 
    ulong k, s, m; 

    if (f == c && c % n == 0 && f != 0) k = c/n; 

    else 
    { 
     s = f/n; 
     m = c/n; 

     k = m - s; 
    } 

    return k; 
} 
} 
+0

请标记正确的答案,如果你有一个:) – 2014-08-18 17:51:27

回答

2

我不知道java的主函数是什么时候返回void,但这可能是这个错误信息的原因。 Spoj还检查你的程序的返回值,它期望0(成功/非错误代码)。 我想改变你的主要功能返回0将修复此错误消息。

我只是有一个C程序的同样的错误,并添加一个返回0更改错误接受。

19

NZEC代表非零退出代码。对于C用户,如果您的主要方法没有返回0,则会生成此消息;声明。其他语言如Java/C++如果抛出异常,则可能会产生此错误。

8

对于Java,当代码抛出异常时返回NZEC。对于Spoj等问题,如果测试用例未被标识符字符串终止,输入中的最后一行通常会导致此异常。

对于这样的情况,一个有用的黑客就是把你的代码包装在try-catch中,并且如果有异常就简单地返回。被捕获的异常表明您已达到输入结尾。

public static void main(String[] args) { 
    temp program = new temp(); 
    try{ 
    program.begin(); 
    } catch(Exception e){ 
     return; 
    } 
} 
+0

即时通讯想知道这是否会运行代码的最后一个测试用例? – coderVishal 2015-01-11 02:47:21

1

此错误也可能意味着程序不能正常工作就是输出不是预期的输出...信不信由你,这是你的代码只是没有做什么的问题有很大的可能性它要求到....

从末给出的链接报价 - >

NZEC(非零退出代码) - 有助于从WA告诉崩溃与 解释型语言; WA =错误的答案。

请访问以下链接The SPOJ System

7

我在编程在Java中有相同的消息。事实证明,我应该把我的源代码放在默认包中(或者根本不要改变包)。我希望这可以帮助别人。

+0

那么你的第二个解决方案是什么? – 2012-12-02 15:16:08

+0

@tAmirNaghizadeh对不起,我不明白这个问题。我在我的java文件的顶部有'package problems.tutorial'。 SPOJ报告NZEC是因为该线。当我删除它时,程序被评估得很好。 – 2012-12-11 20:07:09

-1

我在问题'EKO'的cpp程序上获得了NZEC。我在int main()声明之前发布了一个数组声明。我在主函数中移动了声明,解决方案被接受了。

我通常在main函数之外有数组声明,但在这种情况下数组是一个很大的数组(int array[100001])。所以可以在main中声明你的数组。