2016-06-12 4 views
-2

У меня есть небольшая проблема с моим кодом:НОД GCF HCF в Java

public static int ggT(int a, int b) { 
    int result = 0; 
    if (a == b) 
     result = a; 
    else if (a > b) 
     a -= b; 
     result = a % b; 
    if (b > a) 
     b -= a; 
     result = a % b; 
    return result; 
} 

Первый случай, если работает отлично! Но два других случая не будут работать (они всегда возвращают 0. И я не знаю, почему ...:/ Было бы здорово, если бы кто-нибудь мог помочь или объяснить, где я делал ошибки. I будет признателен за любую помощь.

+0

Используйте '{' и ''} инструкции группы. – Adam

ответ

0

на основе вашего отступа, похоже, вам нужно поставить некоторые скобки вокруг заявлений

public static int ggT(int a, int b) { 
    int result = 0; 
    if (a == b) { 
     result = a; 
    } else if (a > b) { 
     a -= b; 
     result = a % b; 
    } 
    if (b > a) { 
     b -= a; 
     result = a % b; 
    } 
    return result; 
} 

Если вы не используете круглые скобки, только первую строку после «если» рассматривается как часть заявления. «Возврат» всегда выполняется

+0

также можно пробежать случай 2 и 3. Разве это не должно быть иначе? прямой возврат в каждом cae будет еще лучше. – Turo

+0

Спасибо за ваши усилия. Я добавил круглые скобки и все равно получаю неправильный результат/всегда возвращает 0 в качестве результата. :/Любые другие предложения, что может пойти не так? = D – VInceDemi

0

1) Вы должны добавить круглые скобки, если условия. 2) Последнее, если условие должно заменить на else, если условие.

Проверить ниже код:

public static int ggT(int a, int b) { 
     int result = 0; 
     if (a == b){ 
      result = a; 
     } else if (a > b){ 
      a -= b; 
     } else if (b > a){ 
      b -= a; 
     } 

     if(a > b) { //Check 
      result = b % a; 
     } else if(b > a){ 
      result = a % b; 
     } else if(b == a){ 
      result = a; 
     } 
     return result; 
    } 

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

  • Нет связанных вопросов^_^