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

     } 


    } 

Я хочу сломать время, когда ввести «н», но это перерыв, независимо от того, что я вхожу.

+0

Есть более чем одна ошибка. Посмотрите на 'while (run = true)' и 'if (result = true)'. Оператор '=' является * присваиванием *. То, что вы, скорее всего, захотите сделать, это сравнить, т. Е. Использовать '=='. Но легче написать 'while (run)' и 'if (result)', чтобы избежать таких ошибок. Основная проблема заключается в сравнении 'String', используя' == 'вместо' equals', но говоря «else return true», когда вход не является ни «n», ни «y», он еще хуже. И, не пишите 'if (condition) return true; else return false; 'as' return condition; 'намного яснее. – Holger

ответ

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

Смежные вопросы