2017-12-05 2 views
0

Hier ist die Frage - https://www.codechef.com/DEC17/problems/CPLAYRuntime Error (Non Zero Exitcode) in CodeChef Program (JAVA)

Und hier ist meine Lösung -

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; 
        } 
       } 
      } 
     } 
    } 
}   

Diese Ausnahmen sind -

Exception

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) 

Ich bekomme die richtige Antwort auf meinem Computer, aber wenn ich es online einreiche, bekomme ich die NZEC Runtime Fehler.
Ich habe Googling für Lösungen versucht und die meisten Leute sagten, dass der Fehler möglicherweise mit der Hauptfunktion zu tun hat, die eine falsche Zahl zurückgibt oder eine Zahl nicht zurückgibt. Einige sagten, dass dies auf die Verwendung einer bestimmten Funktion oder auf eine Ausnahme zurückzuführen sein könnte, die ich während der I/O nicht behandle. Ich konnte es jedoch nicht herausfinden.

Ich würde es wirklich schätzen, wenn jemand meinen Code reparieren könnte.

Antwort

0

Sie sollten Ihre Lösung in einen Versuch fangen.

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; 
    } 
} 

}

+0

würde ich versuchte schon. Das hat den Fehler umgangen, aber jetzt sagt CodeChef, dass meine Antwort falsch ist, obwohl meine Ausgabe genau so ist, wie sie es wollen. –

+0

Als ich Ihre Frage gelesen habe, habe ich mich darauf konzentriert, Ihr Programm zum Laufen zu bringen. Ich lese nur das Beispiel, sie geben nicht die Anzahl der Testfälle, also sollte T nicht da sein. Außerdem werden sie versuchen, andere Testfälle zu versuchen, um zu sehen, ob Ihr Code fehlschlägt, versuchen, einige Randfälle zu finden, die richtigen Antworten zu finden und sie gegen Ihre Lösung zu testen –