2013-12-20 1 views
0

Что случилось с моим кодом? Он печатает 2,2, когда правильный ответ явно 6,8Специальный пифагорейский триплет

public static void main(String[] args) { 

    int a = 1; 
    int b = 1; 
    int answer = 0; 
    int j = 4; 
    while (j == 4) { 
     for (a = 1; a <= 10; a++) { 
      for (b = 1; b <= 10; b++) { 
       answer = a * a + b * b; 
       if (answer == 100) { 
        j = 10; 
       } 
      } 
     } 
    } 
    System.out.println(a + " " + b); 
} 
+0

что такое 'j' for ??? – Doorknob

+0

Здесь нужно проверить, остановится ли цикл while или продолжен. – user3123012

+0

Почему не просто 'while (answer! = 100)'? – Doorknob

ответ

6

if(answer == 100); у вас есть дополнительные точки с запятой после вашего если.

Это приведет к тому, что казнить j = 10; независимо от того, что answer равно

+0

По-прежнему ничего не печатает ..... – user3123012

+0

способ, которым вы увеличиваете 'a' и' b', 'a' всегда будет равен' b', поэтому они никогда не могут быть 6 и 8. они пойдут (1, 1) (2,2) и т. Д. – vandale

+0

Да, но он все еще печатает 11,11 – user3123012

0

Вы не увеличивающиеся а и Ь в то же время. В вашем коде оба числа всегда будут равны. Кроме того, вы не проверяете соответствие при выходе из цикла.

+0

Я сделал цикл for, чтобы увеличить их отдельно, но он все еще печатает 11,11 – user3123012

+0

удалите цикл while, назовите первый для цикла 'outer' и замените 'j = 10' на' break outer; '. Ваш j = 10 не разрушит внутренние петли. – vandale

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