2017-04-27 12 views
-1

私は勝ち負け率を記録しておくべきいくつかのコードを作ろうとしています。私は別の変数に名前が存在するかどうかをチェックするforループを持っていますが、これは動作しますが、もう一度やり直そうとすると停止します。Javaで2回目のループ・ストアが発生する

System.out.println("\nEnter Name 1"); 
scan.nextLine(); 
String name1 = scan.nextLine(); 
for (int i = 0; i < numPlayers; i++) { 
    if (name1.equals(players[i].name)) { 
     players[i].win++; 
     break; 
    } 
} 
System.out.println("\nEnter Name 2"); 
scan.nextLine(); 
String name2 = scan.nextLine(); 
for (int i = 0; i < numPlayers; i++) { 
    if (name2.equals(players[i].name)) { 
     players[i].loss++; 
     break; 
    } 
} 

コードの後に​​は、whileループに戻る必要がありますが、代わりに停止します。私が2部の名前をコメントアウトすると、コードは機能しますが、私は両方の部分が必要です。

編集1: 相続人は全体のコード

public class Counter { 

    @SuppressWarnings("resource") 
    public static void main(String[] args) { 

     int intTemp; 
     String stringTemp; 

     int keepGoing = 1; 
     int numPlayers = 0; 
     Player[] players = new Player[999]; 

     Scanner scan = new Scanner(System.in); 
     System.out.println("Melee Score Tracker"); 

     while (keepGoing == 1) { 
      System.out.println("\nPrint Scores\t1\nNew Match\t2\nNew Player\t3\nExit\t\t4"); 
      intTemp = scan.nextInt(); 

      // Print Scores 
      if (intTemp == 1) { 

       intTemp = 0; 
       System.out.print("\n"); 
       for (int i = 0; i < numPlayers; i++) { 
        players[i].print(); 
       } 

      } 

      // New Match 
      if (intTemp == 2) { 

       intTemp = 0; 
       System.out.println("\nEnter Name 1"); 
       scan.nextLine(); 
       String name1 = scan.nextLine(); 
       for (int i = 0; i < numPlayers; i++) { 
        if (name1.equals(players[i].name)) { 
         players[i].win++; 
         break; 
        } 
       } 
       System.out.println("\nEnter Name 2"); 
       scan.nextLine(); 
       String name2 = scan.nextLine(); 
       for (int i = 0; i < numPlayers; i++) { 
        if (name2.equals(players[i].name)) { 
         players[i].loss++; 
         break; 
        } 
       } 
      } 

      // New Player 
      if (intTemp == 3) { 

       intTemp = 0; 
       System.out.println("\nWhat's the player's name?"); 
       scan.nextLine(); 
       stringTemp = scan.nextLine(); 
       players[numPlayers] = new Player(); 
       players[numPlayers].name = stringTemp; 
       numPlayers++; 
       System.out.println(numPlayers); 

      } 

      // Exit 
      if (intTemp == 4) { 

       System.exit(0); 

      } 
     } 

    } 
} 
+0

whileループも表示されません –

+0

whileループをポストすることができますか?それはインフィニテュートで実行されているためにストールする可能性があります –

+0

'scan.nextLine();'( 'String name2 = scan.nextLine ); ')??? –

答えて

0

これが原因で停止します。

scan.nextLine(); 
scan.nextLine(); 
String name2 = scan.nextLine(); 

入力を3回待っています。あなたは一度入力したいので、それを置き換えてください。このような将来の事で

String name2 = scan.nextLine(); 

簡単にコードが実際にループではほとんどのメッセージをプリントアウトすることにより、ループのために入るかどうかをチェックすることにより、デバッグすることができます。

String name2 = scan.nextLine(); 
for (int i = 0; i < numPlayers; i++) { 
    System.out.println("We have entered the loop."); 
    if (name2.equals(players[i].name)) { 
     players[i].loss++; 
     break; 
    } 
} 

コンソールに出力が表示される場合、問題はループ自体ではなくその前にあることがわかります。

+0

ありがとうございました。これをやっていないときにコードの次の部分にスキップしていたので、私はこれをしました。 – Reilley

-2

私はコードに何か問題が表示されていない

(私は答えとしてそれを置く理由です、まだコメントすることはできません) 、もう少し分かち合うことができますか?私は問題が他の場所にあると信じています。また、あなたが私に.javaファイルを提供すれば、Netbeansで試してみます。

+0

はい、あなたはコメントできません。それは目的に沿ったものです。そして、誤った答えを使って、そのことを回避してはいけません。安心してください。彼の入力を改善するように依頼する人は、通常、十分な人がいます。 – GhostCat

+0

それはいいですね、私はOPを助けようとし、あなたは私をdownvote、本当にありがとう。それは本当に私を人々を助けようとするのを止めることになります。 –

関連する問題