2017-12-05 24 views
0

は、ここで質問です - https://www.codechef.com/DEC17/problems/CPLAYランタイムエラー(ゼロ以外の終了コード)(JAVA)

そしてここでは、私の解決策だ -

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ランタイムエラーが発生します。
私は解決策のためにグーグルを試みました、そして、大抵の人は、間違った番号を返すか、数値を返さないメイン関数とエラーが関係している可能性があると言いました。一部の人は、特定の関数を使用していることやI/O中に処理していないという例外が原因である可能性があります。しかし、私はそれを把握することができませんでした。

誰かが自分のコードを修正できるのであれば、本当に感謝しています。

答えて

0

解決策を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; 
    } 
} 

}

+0

私はすでにそれを試してみましたと思います。それはエラーを回避しましたが、CodeChefは私の答えが間違っていると私の出力が私の出力は、彼らがそれを望むようにでも、私に伝えます。 –

+0

あなたの質問を読んだとき、私はあなたのプログラムを動かすことに焦点を合わせました。私はその例を読んだだけで、テストケースの数を教えてくれないので、Tはそこにはいけません。また、他のテストケースを試して、コードが失敗したかどうかを確認し、いくつかのエッジケースを見つけ出し、正しい答えを見つけてソリューションに対してテストします –

関連する問題