【问题标题】:Runtime Error(Non Zero Exit Code) in CodeChef Program (JAVA)CodeChef 程序 (JAVA) 中的运行时错误(非零退出代码)
【发布时间】:2017-12-05 13:16:44
【问题描述】:

问题来了—— https://www.codechef.com/DEC17/problems/CPLAY

这是我的解决方案 -

import java.util.Scanner;

class Penalty_Shoot_Out
{

    public static void main(String args[]) 
    {
        Scanner sc = new Scanner(System.in);
        //System.out.println("T: ");
        int T = sc.nextInt();
        sc.nextLine();
        while(T-->0)
        {
            String s = sc.nextLine();
            int l = s.length();
            s = " " + s;
            int A_score = 0, B_score = 0, A_shots = 0, B_shots = 0, flag = 0, A_shots_left = 5, B_shots_left = 5, shots_left = 0;
            Outer:for(int i=1; i<=20; i++)
            {
                char c = s.charAt(i);
                if(i%2==1)
                {
                    flag = 0;
                    A_shots++;
                    A_shots_left--;
                    if(c=='1')
                        A_score++;
                }
                else
                {
                    flag = 1;
                    B_shots++;
                    B_shots_left--;
                    if(c=='1')
                        B_score++;
                }
                if(i<=10)
                {
                    if(A_score<B_score)
                    {
                        if(B_score-A_score>A_shots_left)
                        {
                            System.out.println("TEAM-B " + i);
                            break Outer;
                        }
                    }
                    else
                    {
                        if(A_score-B_score>B_shots_left)
                        {
                           System.out.println("TEAM-A " + i);
                           break Outer;
                        }
                    }
                }
                else if(i>10 && i<=20)
                {
                    if(i%2==0)
                    {
                        if(A_score>B_score)
                            System.out.println("TEAM-A " + i);
                        else if(B_score>A_score) 
                            System.out.println("TEAM-B " + i);
                        else
                            System.out.println("TIE");
                        break Outer;
                    }
                }
            }
        }
    }
}        

这些是例外 -

例外

in thread "main" java.util.NoSuchElementException

    at java.util.Scanner.throwFor(Scanner.java:862)

    at java.util.Scanner.next(Scanner.java:1485)

    at java.util.Scanner.nextInt(Scanner.java:2117)

    at java.util.Scanner.nextInt(Scanner.java:2076)

    at Penalty_Shoot_Out.main(Main.java:8)

我在计算机上得到了正确答案,但是当我在线提交时,我得到 NZEC Runtime 错误。
我尝试用谷歌搜索解决方案,大多数人说错误可能与 main 函数返回错误数字或未返回数字有关。有人说这可能是由于使用了特定功能或由于我在 I/O 期间未处理的异常。但是,我一直无法弄清楚。

如果有人能修复我的代码,我将不胜感激。

【问题讨论】:

    标签: java runtime-error bluej


    【解决方案1】:

    你应该把你的解决方案放在 try catch 中。

    public static void main(String args[]) 
    {
      try {
        Scanner sc = new Scanner(System.in);
        //System.out.println("T: ");
        int T = sc.nextInt();
        sc.nextLine();
        while(T-->0)
        {
           String s = sc.nextLine();
            int l = s.length();
            s = " " + s;
            int A_score = 0, B_score = 0, A_shots = 0, B_shots = 0, flag = 0,
                A_shots_left = 5, B_shots_left = 5, shots_left = 0;
            Outer:for(int i=1; i<=20; i++)
            {
                char c = s.charAt(i);
                if(i%2==1)
                {
                    flag = 0;
                    A_shots++;
                    A_shots_left--;
                    if(c=='1')
                        A_score++;
                }
                else
                {
                    flag = 1;
                    B_shots++;
                    B_shots_left--;
                    if(c=='1')
                        B_score++;
                }
                if(i<=10)
                {
                    if(A_score<B_score)
                    {
                        if(B_score-A_score>A_shots_left)
                        {
                            System.out.println("TEAM-B " + i);
                            break Outer;
                        }
                    }
                    else
                    {
                        if(A_score-B_score>B_shots_left)
                        {
                           System.out.println("TEAM-A " + i);
                           break Outer;
                        }
                    }
                }
                else if(i>10 && i<=20)
                {
                    if(i%2==0)
                    {
                        if(A_score>B_score)
                            System.out.println("TEAM-A " + i);
                        else if(B_score>A_score) 
                            System.out.println("TEAM-B " + i);
                        else
                            System.out.println("TIE");
                        break Outer;
                    }
                }
            }
        }
      } catch(Exception e) {
        return;
      }
    }
    

    }

    【讨论】:

    • 我已经试过了。这绕过了错误,但现在 CodeChef 告诉我我的答案是错误的,即使我的输出正是他们想要的。
    • 当我阅读您的问题时,我专注于让您的程序运行。我刚刚阅读了这个例子,他们没有给你测试用例的数量,所以 T 不应该在那里。此外,他们会尝试其他测试用例来尝试查看您的代码是否失败,尝试提出一些边缘案例,找到正确的答案并针对您的解决方案进行测试
    猜你喜欢
    • 2023-03-31
    • 2018-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-19
    相关资源
    最近更新 更多