2014-10-01 59 views
-1

問題是
編寫一個方法isMultiple,它確定了一對整數是否第二個整數是第一個整數的倍數。該方法應該使用兩個整數參數,如果第二個是第一個的整數倍,則返回true,否則返回false。

[提示:使用餘運算符。]將這一方法爲,其輸入的一系列對的整數的(一對在一個時間),並確定在每對中的第二值是否是的first.har()編寫一個方法isMultiple確定

的倍數的應用程序

這裏是我的代碼

import java.util.*; 
public class Multiples { 

    public static void main(String [] args){ 

     boolean run = true; 

     while(run = true){ 
     System.out.print("Enter one number:"); 
     Scanner input = new Scanner(System.in); 

     int num1 = input.nextInt(); 
     int num2 = input.nextInt(); 

     System.out.println("Do you want to enter another pair(y/n)?"); 
     String a = input.next(); 



     boolean result = isMultiple(num1, num2); 

     if(result = true){ 
      System.out.println(num1 + " is a multiple of " + num2); 
     } 
     else{ 
      System.out.println(num1 + " is not a multiple of " + num2); 
     } 

     if(YesOrNo(a)){ 
      break; 
     } 


     } 


    } 

     public static boolean YesOrNo(String a){ 

      if(a == "y") 
       return false; 
      else if(a == "n") 
       return true; 
      else 
       return true; 
     } 


     public static boolean isMultiple (int x , int y) 
     { 
      if(x % y == 0 || y % x == 0) 
       return true; 
      else 
       return false; 

     } 


    } 

我想休息的時候輸入「N」,但它打破不管我進入時。因爲這

+0

有超過一個錯誤。看看'while(run = true)'和'if(result = true)'。 '='運算符是一個*賦值*。你最想做的就是比較,即使用'=='。但是編寫'while(run)'和'if(result)'來避免這種錯誤更容易。你的主要問題是使用'=='而不是'equals'進行字符串比較,但是當輸入既不是「n」也不是「」y「使情況變得更糟時,」else返回true「。並且,不要寫'if(condition)return true;否則返回false;'作爲返回條件;'更清晰。 – Holger 2014-10-01 22:41:30

回答

0

這就是:

if(a == "y") 
    return false; 
else if(a == "n") 
    return true; 
else 
    return true; 

總會執行else部分。這意味着YesOrNo(a)將永遠是true並且將始終打破循環。

發生這種情況是因爲您無法使用==運算符比較String

將其更改爲這個:

if(a.equals("y"_) 
    return false; 
else if(a.equals("n")) 
    return true; 
else 
    return true; 
+0

非常感謝你 – King 2014-10-01 22:35:51