2015-09-24 83 views
1

我正在創建一個計算兩個數字的程序。我的問題是0將是該程序的非法輸入,但不是再次詢問兩個數字。Java循環和零除數

程序繼續運行時沒有出現錯誤,或者在ZERO被估算時給出任何答案,假設要求用戶再次輸入兩個不同的數字。

我已經完成了所有的代碼,它主要工作,並沒有可見的錯誤。

import java.util.*; 
import java.util.Scanner.*; 

public class MinilabLoopLogic 
{ 
    public static void main(String[ ] args) 
    {  
     int num1, num2, divisor, total; 

     Scanner kb = new Scanner(System.in); //you do it! 

     System.out.print("Please enter 2 integers (separated by spaces): "); 
     num1 = kb.nextInt(); 
     num2 = kb.nextInt(); 

     System.out.println("\n\nThis program will generate numbers BETWEEN "+ num1 + " " + num2); 

     System.out.println("\nPlease enter the integer your output should be divisible by: "); 
     divisor = kb.nextInt(); 
     while (divisor == 0) 
     { 
      divisor = kb.nextInt(); 
     } 

     System.out.println("\n\n----------------------------------------"); 
     //Be able to handle 1st number smaller 
     // OR 2nd number smalle 
     //Use the modulus operator to check if a number is divisible 
     if (num1 < num2) 
     { 
      for (total = num1+1; total < num2; total++) 
      { 
       if (total % divisor == 0) 
       { 
        System.out.println(total); 
       } 
      } 
     } 
     else 
     {    
      for (total = num1 - 1; total > num2; total--) 
      { 
       if (total % divisor == 0) 
       { 
        System.out.println(total); 
       } 
      } 
     } 
    } 

}//end main() 
+0

這是什麼問題? 你可以擴展運行永遠的部分? –

+0

我只是檢查代碼纔看到問題,所以我運行它,並且對我來說工作正常。如果輸入一個零除數,它會等待我輸入一個新的數字,一旦輸入一個非零數字,它就會給出結果並退出。 – blm

+0

如果修復(對齊)所有縮進,代碼可能會更容易閱讀。 – Andreas

回答

0

你的問題就出在你的while循環尋找除數:

 System.out.println("\nPlease enter the integer your output should be divisible by: "); 
      divisor = kb.nextInt(); // gets your divisor 
      while (divisor == 0) //if it is illegal, e.g. 0 
      { 
       divisor = kb.nextInt(); // waits for more divisor input 
      } 

你應該輸出字符串告訴是什麼問題的用戶。說:

  divisor = kb.nextInt(); // gets your divisor 
      while (divisor == 0) //if it is illegal, e.g. 0 
      { 
       System.out.println("\nYou can't divide by 0. Try again!: "); 
       divisor = kb.nextInt(); // waits for more divisor input 
      } 

另外,如果你希望他們不得不重新進入num1num2然後掃描儀輸入具有在while循環發生。

+0

他的代碼看起來非常好!沒有問題。你改變了什麼? –

+1

稱爲** feedback **的神奇構造。 –

+0

嗯,當你刪除提示文字時,用戶應該怎麼知道輸入除數? – Andreas

0

您加入編輯如下:,它的假設再次要求用戶輸入兩個不同的號碼

程序繼續運行,而給了一個錯誤,或給予任何回答時零推算運行。

那是因爲你只是環回輸入了零的時候再弄值,沒有編寫任何新的提示文本。

它也只得到一個新的除數,而不是「兩個不同的數字」。如果你回到之前的「請輸入2個整數」,它實際上最終會再次提示所有3個數字。