2014-01-28 3 views
3

Я использую NetBeans IDE, и он не обнаружил никаких ошибок. Мне просто интересно, почему этот код не выполняется. FYI это упражнение 4.4 из «Think Java: как думать, как компьютерный ученый».Почему мой Java-код не выполняет System.out.println?

import java.lang.Math; 
public class Exercise { 
    public static void checkFermat(int a, int b, int c, int n){ 

     if ((Math.pow(a, n))+(Math.pow(b, n))==(Math.pow(c, n)) && n!=2){ 
      System.out.println("Holy smokes, Fermat was wrong!"); 
     } 
     else{ 
      System.out.println("No, why would that work?"); 
     } 
    } 

    public static void main(String args[]){ 
     int a = 8; 
     int b = 4; 
     int c = 10; 
     int n = 3; 
    } 
} 
+7

... потому что вы никогда не называете 'checkFermat'? – Doorknob

+7

Я не согласен с downvotes. Если плакат (по-видимому) изучает Java, это вполне разумный вопрос. Просто потому, что ответ очевиден опытному программисту, не означает, что это очевидно для новичка. –

+0

@EricJ. [Chatroom/meta effect] (http://chat.meta.stackoverflow.com/transcript/message/1773626#1773626) – Joe

ответ

8

Вы никогда не вызвать функцию checkFermat от main. Единственным кодом, который выполняется в программе Java, является код внутри main. Любые другие методы, которые вы определяете, выполняются только в том случае, если они вызываются из основного. Таким образом, ваш код должен прочитать:

import java.lang.Math; 

public class Exercise { 
    public static void checkFermat(int a, int b, int c, int n){ 

     if ((Math.pow(a, n))+(Math.pow(b, n))==(Math.pow(c, n)) && n!=2){ 
      System.out.println("Holy smokes, Fermat was wrong!"); 
     } 
     else{ 
      System.out.println("No, why would that work?"); 
     } 
    } 

    public static void main(String args[]){ 
     int a = 8; 
     int b = 4; 
     int c = 10; 
     int n = 3; 

     checkFermat(a, b, c, n); //call the method here 
    } 
} 

Кроме того, ваши локальные переменные a, b, c и n не применяются автоматически к функции. Вы должны передать их как аргументы явно. Обратите внимание на a, b, c и n переменные внутри main полностью отделены от a, b, c и n в checkFermat: они являются отдельными переменными, поскольку они объявлены в отдельных функциях.

+0

Большое спасибо, я не знаю, что бы я сделал без вас, ребята. :) – someoneinsane

2

Потому что вы не вызывая метод checkFermat в главном

Try,

public static void main(String args[]){ 
     int a = 8; 
     int b = 4; 
     int c = 10; 
     int n = 3; 
     checkFermat(a,b,c,n); 

} 
2

Обновление основной метод:

public static void main(String args[]){ 
     int a = 8; 
     int b = 4; 
     int c = 10; 
     int n = 3; 
     Exercise.checkFermet(a,b,c,n); 
    } 
0

Для выполнения System.out.println() вы должны позвонить по телефону checkFermat функция, не звонящая ей, никогда не будет принять это заявление, чтобы выполнить, но если вы будете называть это основная функция будет вызывать checkformat и выполнить код, написанный внутри этой функции ...

0

Вы просто вызвать метод checkFermat как сильфона

Exercise.checkFermat (а , b, c, n) или

Упражнение e = новое Упражнение(); e.checkFermat (a, b, c, n);

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