2012-04-04 10 views
-3

나는 자바 코딩에서 매우 새로운입니다. 내 main 메서드를 값이 소수인지 여부를 결정하는 메서드와 연결하는 방법을 찾는 데 어려움이 있습니다. 이클립스에서 아래 코드를 실행하면 메서드가 전혀 실행되지 않는 것처럼 보입니다. 아무도 내가 뭘 잘못했는지 알아?자바 메서드를 호출하는 방법

또한 마지막 부분에 대해 입력 값이 소수인지 아닌지를 System.out 인쇄 할 것을 생각하고있었습니다. 즉 true 또는 false 일 수 있습니다.

import java.util.*; 

class IsPrime { 
    public boolean isprime(int n) { 
     Scanner input1= new Scanner(System.in); 
     System.out.println("input single integer?"); 

     int n1 = input1.nextInt(); 

     int i,c=0; 

     for(i=1;i<=n1;i++) { 
      if(n1%i==0){ 
       c++; 
      } 
     } 
     if(c==2) { 
      return true; 
     } else { 
      return false; 
     } 
     System.out.println("Your number is:") 
    } 
} 
+0

우리는 당신이 우리에게 증상을 얘기하지 않는 한 당신이 뭘 잘못했는지 당신에게 말할 수의 인스턴스를 생성하지 않고 그것을 참조 할 수 있습니다. 어떤 종류의 오류 메시지가 나타 났습니까? –

+2

내가 잘못한 것을 볼 수 있는데, 메소드가 반환 된 후에'System.out.println'을 호출하려고합니다. – joshuahealy

+0

기본 방법이 없습니다. – jahroy

답변

2

당신이 그것을하기 전에

else { 
return false; 
} 

을 가지고

System.out.println("Your number is:") 

가 도달 할 수없는 라인입니다.

+0

이해하고 고맙습니다! 그래서 intput 정수가 소수인지 아닌지를 출력하는 새로운 방법을 만들어야합니까? – user1313137

+0

주 방법이 있어야합니다 ... @Alonso Dominguez의 대답을 참조하십시오. – Martin

+0

@ user1313137, 질문에 대한 답변을 가지고 있다면 도움이된다면 [accepting] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)에 대해 생각해보십시오. 당신은 문제를 해결할 수 있습니다. –

2

우선 딸기와 appclay가 말한 것은 옳습니다.

반면에 (기본 클래스의 메서드에 대해 이야기하는 것) 메서드는 클래스 메서드 (정적 메서드) 인 반면 isprime 메서드는 인스턴스 메서드입니다.

는 다음과 같은 시도 :

public static void main(String[] args) { 
    int possiblePrime = // initialise your parameter 
    IsPrime isPrime = new IsPrime(); 
    boolean primeOrNot = isPrime.isprime(possiblePrime); 
    System.out.println("Your number is prime: " + primeOrNot); 
} 
0

난 당신이 무엇을 찾고 있는지 이해하는 경우에 isprime 방법을 구현하고 주에 전화입니다.

class IsPrime { 
    public boolean isPrime(int n) { 
     int i,c=0; 

     for(i=1;i<=n;i++) { 
      if(n%i==0){ 
       c++; 
      } 
     } 
     if(c==2) { 
      return true; 
     } else { 
      return false; 
     } 
    } 
    public static void main(String[] args) { 
     Scanner input1= new Scanner(System.in); 
     System.out.println("input single integer?"); 

     int n = input1.nextInt(); 
     IsPrime isPrime = new IsPrime(); 
     System.out.println("Your number is prime: " + isPrime.isPrime(n)); 
    } 
} 

원하는 작업을 수행해야합니다. 그러나 코드에 버그가 있습니다. 가지고있는 것은 소수뿐만 아니라 모든 숫자에 대해 true를 반환합니다. 나는 당신에게 버그와 수정 사항을 발견하도록 맡길 것입니다.

편집 : 버그가 없습니다. 아래의 코멘트를 참조하십시오.

+1

이 방법은 효과가 있지만 어떤 수단으로도 효율적이지 않습니다. 방금 코딩 (구문 수정)하고 5, 13, 10, 25, 91, 97 및 100으로 실행하고 모두를 위해 일했습니다. – twain249

+0

한숨! 나는 바보 야. 루프가 2에서 n-1로 이동해야한다고 생각했는데 if 문이 c> 0인지 확인하는 경우입니다. –

0
정적으로 방법을 변경

당신은 그 클래스

public static boolean isprime(int n) { 
관련 문제