2014-10-01 125 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