2014-01-28 4 views
3

Netbeans IDE를 사용 중이며 버그를 발견하지 못했습니다. 왜이 코드가 실행되지 않는지 궁금합니다. FYI 이것은 "Think Java : 컴퓨터 과학자처럼 생각하는 법"에서 연습 문제 4.4입니다.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

당신은 main에서 checkFermat 함수를 호출하지 않습니다. Java 프로그램에서 실행되는 유일한 코드는 main 내부의 코드입니다. 사용자가 정의한 다른 메소드는 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, cn 자동 기능에 적용되지 않습니다. 인수로 명시 적으로 전달해야합니다. main의 내부 a, b, cn 변수는 a, b, c 완전히 분리되어 기록하고 checkFermat에서 n : 그들은 별도의 기능에 선언 때문에 별도의 변수입니다.

+0

대단히 고마워, 너희들없이 내가 무엇을 할 것인지 모르겠다. :) – someoneinsane

2

당신이 주요

시도에서 checkFermat 메소드를 호출되지 않기 때문에,

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

당신은 노호

Exercise.checkFermat 같은 방법 checkFermat을 부르는 , b, c, n) 또는

운동 e = new 운동(); e.checkFermat (a, b, c, n);

관련 문제