2017-10-10 7 views
-4
public static void checkWeight(int startWeight, Number weight){ 
     System.out.println("HERE?!"); 
     y=false; 
     System.out.println("HEHEHEH"); 
     mainLoop:{ 
      if((y==true)||(startWeight<=50)) { 
       weight=startWeight; 
       System.out.println("HERE"); 
       break mainLoop; 
      }else{ 
      subMainLoop:{ 
       while(z==false) { 
        int userWeightCheck=Integer.parseInt(JOptionPane.showInputDialog("Your cat's weight: ")); 
         if(userWeightCheck<=50) { 
          System.out.println("OR HERE"); 
          y=true; 
          z=true; 
          break subMainLoop; 
         }else { 
          System.out.println("Sorry, but that is not an acceptable input. Try again."); 
          continue; 
         } 
       } 
      } 
      } 
     } 
    } 

こんにちは!私はこの問題を解決できないようです。私はSystem.out.printlnを追加して、トラブルシューティングを自分で行っています。私は過去1時間半のインターネットをスキャンしていますが、それでも解決策を見つけることはできません。それは"HEHEHEH"を出力し、do文はif文を通過する必要があるときには "ここに"表示されません。数字を使用した壊れた検証

私のメインクラスの呼び出しは、このようなものです:

int userWeight=Integer.parseInt(JOptionPane.showInputDialog("Your cat's weight")); 
Animal.checkWeight(userWeight, 51); 

問題はそれ以外の場合は、ユーザーが番号を入力したときに、それが動作するはずということであるならばその数はである場合にのみ=または< 50、ユーザーが以前の回答を再入力するよう求めるウィンドウがポップアップ表示されます。しかし、それは完全にループを無視しているようです。

大変助かりました! :)

+1

問題は...ですか? * "どちらの条件も満たしていなくても" HEHEHEH "を印刷します" * - そのメッセージを印刷する条件はありません。 – Tom

+0

'System.out.println()'を使う代わりに、デバッガを使う方法を学ぶべきです。これは、バグの追跡に役立ちます。 – Thomas

+2

"HEHEHEH"は、条件がチェックされる前に印刷されます。 –

答えて

0

これは、あなたが何を意味するのかを理解しようとしている最中に、あなたが使用している理由を問わず同じように書いた方法を保つことを試みている最中です。私はラベルを取り除き、それらをwhilesに置き換えました。

public static void checkWeight(int startWeight, Number weight) { 
     System.out.println("HERE?!"); 
     boolean run = true; 
     System.out.println("HEHEHEH"); 
     while (true) { 

      if (startWeight <= 50) { 
       weight = startWeight; 
       System.out.println("HERE"); 
       break; // or "return weight" maybe? 
      } 

      while (run) { 
       int userWeightCheck = 
Integer.parseInt(JOptionPane.showInputDialog("Your cat's weight: ")); 
       if (userWeightCheck <= 50) { 
        System.out.println("OR HERE"); 
        run = false; 
        startWeight = userWeightCheck; 
        break; // or "weight" maybe? 
       } else { 
        System.out.println("Sorry, but that is not an acceptable 
input. Try again."); 
        continue; 
       } 
      } 
     } 

    } 
関連する問題