2015-02-10 128 views
0

我想要一個代碼,告訴您輸入兩個數字,直到輸入兩個偶數倍數。我正在使用循環語句來執行此任務,並且當我運行我的代碼並鍵入兩個甚至不是倍數的數字時,它總是說「請輸入偶數倍」。請幫幫我。 Thx提前。這是我的代碼。如何停止此循環語句

public class looper { 
     public static void main (String[] args) { 

    float firstNumber = 0; 
    float secondNumber = 0; 
    float finalNumber = 0; 

    java.util.Scanner input=new java.util.Scanner(System.in); 

    System.out.println("Enter your first number."); 
     firstNumber = input.nextFloat(); 
     input.nextLine(); 


     System.out.println("Enter your second number."); 
     secondNumber = input.nextFloat(); 

     finalNumber = firstNumber % secondNumber; 

     System.out.println(secondNumber + " and " + firstNumber + " are even multiples."); 
    while(finalNumber != 0) { 

     System.out.println("Please enter even multiples."); 


     } 
     } 
    } 
+0

我對你的最終目標有點困惑。我可以看到如何修復這個循環,但是你真的想用'finalNumber'來實現 - 你是否希望它繼續以和循環外部相同的方式進行計算? – Makoto 2015-02-10 04:02:46

+0

如果最終號碼不是零,我希望代碼要求用戶重新輸入他的號碼。如果最後的數字是0,那麼我希望程序完成。 – user4289755 2015-02-10 04:04:37

回答

0

你需要這樣的方式,它會滿足你的while循環的終止條件設定的finalNumber值。你可能想要做這樣的事情(我還沒有編譯的代碼!):

while (finalNumber != 0){ 

    System.out.println("Enter your first number."); 
    firstNumber = input.nextFloat(); 
    input.nextLine(); 

    System.out.println("Enter your second number."); 
    secondNumber = input.nextFloat(); 

    finalNumber = firstNumber % secondNumber; 

} 
System.out.println(secondNumber + " and " + firstNumber + " are even multiples."); 
+0

它在'finalNumber == 0'時終止。你可能意思是說,必須確保'finalNumber'實際上將它設爲0. – Makoto 2015-02-10 04:01:37

+0

謝謝,我會試試這個。 – user4289755 2015-02-10 04:07:23

-1

你需要的,如果語句中使用的,因爲你只是想告知輸入的數字是不正確的用戶

do{ 
    System.out.println("Enter your first number."); 
    firstNumber = input.nextFloat(); 
    input.nextLine(); 


    System.out.println("Enter your second number."); 
    secondNumber = input.nextFloat(); 

    finalNumber = firstNumber % secondNumber; 
    if(finalNumber!=0) 
     System.out.println("values not correct "); 
}while(finalNumber!=0); 
+0

需要一個循環,我不明白這將如何解決這個問題。 – Makoto 2015-02-10 04:03:25

+0

我需要一個循環,因爲我不想讓程序停止運行。基本上如果最終數字不是零,我希望代碼要求用戶重新輸入他的數字。如果最後的數字是0,那麼我希望程序完成。 – user4289755 2015-02-10 04:06:12

+0

我最近的編輯,將解決您的查詢 – Vihar 2015-02-10 04:07:19

0

要小心計算while循環的條件。如果不更新用於檢查循環內部的變量,則會進入無限循環。

這裏重要的是你需要用戶的兩個值。你不是真的需要第三個變量來跟蹤它取決於你如何寫它,但它可能會以這種方式創作:

  • 獲得值#1
  • 獲得價值2號
  • 雖然value1 % value2 == 0 ...
    • ...打印消息並再次從用戶檢索值#1和值#2。
  • 打印完成消息。
System.out.println("Enter your first number."); 
firstNumber = input.nextFloat(); 
input.nextLine(); 
System.out.println("Enter your second number."); 
secondNumber = input.nextFloat(); 

while(firstNumber % secondNumber != 0) { 
    System.out.println("Please enter two numbers that are multiples of each other."); 
    System.out.println("Enter your first number."); 
    firstNumber = input.nextFloat(); 
    input.nextLine(); 
    System.out.println("Enter your second number."); 
    secondNumber = input.nextFloat(); 
} 

// afterwards, print whatever message you require. 
0

如果您在不使用,而這時如果條件使用沒有問題。製作兩個獨立的功能。一種是檢查調用其他條件的條件以獲得結果。這是一個示例代碼。希望它能幫助你。對不起,可能英文不好。

public class Looper 
{ 
     public static void main (String[] args) 
     { 
      Looper looper = new Looper(); 
      looper.runTest(); 
     } 

     public void runTest() 
     { 
      float finalNumber = getResult(); 
      System.out.println("finalNumber: " + finalNumber); 
      if(finalNumber != 0.0) 
     { 
      System.out.println("Please enter even multiples."); 
      runTest(); 
     } 
     } 

     public float getResult() 
     { 
      java.util.Scanner input=new java.util.Scanner(System.in); 

      System.out.println("Enter your first number."); 
      float firstNumber = input.nextFloat(); 
      input.nextLine(); 

      System.out.println("Enter your second number."); 
      float secondNumber = input.nextFloat(); 
      float finalNumber = firstNumber % secondNumber; 
      System.out.println(secondNumber + " and " + firstNumber + " are even multiples."); 
      return finalNumber; 
     } 

    }