2017-05-07 2 views
0
Story.direct3(); 
      br.readLine(); 
      Story.des(); 
      try{ 
      short choice1 = Short.parseShort(br.readLine()); 

      switch(choice1){ 
       case 1: 
        Display.yes(); 
        br.readLine(); 
        Story.rid(); 
        String answ = br.readLine(); 

        if ("Gravity".equals(answ) || "gravity".equals(answ)){ 
         Display.correct(); 
         Short choice2 = Short.parseShort(br.readLine()); 

         switch(choice2){ 
          case 1: 

           break; 
         } 
        } 
        else{ 
         int less = player.hp - 10; 
         System.out.println("Wrong answer! Your hp will be lessen by 10. The correct answer is : 'Gravity'"); 
         System.out.println("Your remaining HP is: " + less + "[press enter to continue...]"); 
         br.readLine(); 
         Story.wrong(); 
         br.readLine(); 

        } 
        break; 
       case 2: 
        Story.wrong1(); 
        br.readLine(); 
        break; 
      } 
      break; 
    } 
      catch(NumberFormatException ex){ 
       System.out.println("Would you like to change your battle item?" 
      + "\n[1] Yes" 
      + "\n[2] No"); 
      } 

私はちょうど2ヶ月前にコードJavaを開始し、私の友人のコードを尋ねて、それを試してみました。事は私が試して/キャッチを置く方法を知らないです。何か不足していますか?試してみようキャッチする場所がわからない

+2

どこが必要ですか?今、コードの問題は何ですか?あなたが問題を抱えていることをもう少し説明してください。 –

+0

@SamKuhmonen間違った答えを入力すると、プレイヤーは戦闘アイテムを装備できるはずです。それは「あなたのバトルアイテムを変更しますか?出てくる。それはどうしたらいいですか? –

答えて

1

例外処理については、try-catchブロック内でいくつかの例外が発生する可能性のある行/コードブロックだけを置く必要があります。たとえば、あなたのケースで、あなたはのtry-catchをユーザーの入力を、彼は整数番号を提供していることを確認する必要ができます。

try{ 
     short choice1 = Short.parseShort(br.readLine()); 
}catch(NumberFormatException ex){ 
    System.out.println("Would you like to change your battle item?" 
     + "\n[1] Yes" 
     + "\n[2] No"); 
} 

しかし、これが唯一の彼の入力が数値であれば、彼がダウンして3または4どの何を書くかどうかをチェックしますあなたのスイッチは処理しませんか?スイッチのデフォルトのケースを含めるか、numberが2より大きいか1より小さいかどうかをチェックし、質問を繰り返します。

また、入力のこのタイプは、エラー処理に頼ることなく、はるかに簡単に扱うことができます

String s = br.readLine(); 
while(!s.equals("2") || s.equals("1")){ 
    System.out.println("Invalid input, try again:");// change message to fit your game 
    s = br.readLine(); 
} 
if(s.equals("1")){ 
    //Do something 
}else{ 
    //Do something 
} 

は、コードが複雑すぎるせずにそれを行うことが可能である場合は、のtry-catchを利用するのは避けるべきことを忘れないでください。そして、この場合、はるかに単純なコードになります。

関連する問題