2014-01-30 2 views
-3

정적이 아닌 주 방법으로이 도구를 실행 해 보았지만 효과적이었습니다. 이 문제를 어떻게 해결할 수 있습니까?정적 컨텍스트에서 비 정적 메서드를 참조 할 수 없다는 것은 무슨 의미입니까?

public class GV 
    { 
    public String getVowel(String n) 
    { 
    String[]vowels= { "a", "e", "i", "o", "u", "A", "E", "I", "O", "U"}; 
    for (int i=0; i< n.length()-1; i++) 
    { 
     for (int m=0; m< vowels.length -1; m++) 
     { 
      if (n.substring(i, i+1). equals (vowels[m])) 
       return n.substring(i, i+1); 
     } 
    } 
    { 
     return n.substring(-1); 

    } 
    } 
    public static void main(String[] args) 
    { 
    String n = "orange"; 
     System.out.println("The amount of vowels are" + getVowel(n)); 
    } 
} 
+1

http://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html – SLaks

+0

정적 메소드는 클래스와 연관되며 객체와 정적이 아닙니다. 이런 식으로 생각하십시오; 클래스는 자동차의 파란색 프린트이고 오브젝트는 특정 자동차입니다. 청사진에는 도우미 메서드가 있지만 청사진에서 .accelerate()를 호출하려고하면 실제 자동차가 필요하므로 작동하지 않습니다 –

+0

게시하기 전에 검색 했습니까? 정적 컨텍스트에서 참조 할 수없는 비 정적 항목에 대한 스택 오버플로에 대한 많은 질문이있는 것 같습니다. –

답변

1

그것은 말씀을 단지 의미 : 당신이 static 방법에서 비 static 방법을 호출 할 수 없습니다.

public static String getVowel(String n) { . . . } 

이 유일한 작품이 경우 getVowel 내부적으로 인스턴스 정보를 사용하지 않기 때문에 : 한 가지 방법은 단순히 static로 당신의 getVowel 방법을 선언하는 것입니다. 일반적으로,하지만 당신은 인스턴스 방법으로 방법을 GV의 인스턴스를 생성하고 호출 할 필요가 :

public static void main(String[] args) 
{ 
    String n = "orange"; 
    GV gv = new GV(); 
    System.out.println("The amount of vowels are" + gv.getVowel(n)); 
} 
+0

두 대답 모두에 대해 많은 downvoting이 있습니다. downvoters가 그들에게 무슨 문제가 있는지 설명해 줄 것입니까? (대답, 나는 의미합니까)? –

+0

고맙습니다. 고맙습니다. – marvRed

0

비 정적 메서드는 클래스의 인스턴스의 방법이다. 실행하려면 클래스를 생성해야합니다. 프로그래밍의 정말 아주 기본 그게 ... 여기

올바른 방법입니다 :

public class GV 
{ 
public String getVowel(String n) 
{ 
String[]vowels= { "a", "e", "i", "o", "u", "A", "E", "I", "O", "U"}; 
for (int i=0; i< n.length()-1; i++) 
{ 
    for (int m=0; m< vowels.length -1; m++) 
    { 
     if (n.substring(i, i+1). equals (vowels[m])) 
      return n.substring(i, i+1); 
    } 
} 
{ 
    return n.substring(-1); 

} 
} 
    public static void main(String[] args) 
    { 
String n = "orange"; 
    System.out.println("The amount of vowels are" + new GV().getVowel(n)); 
} 
} 
+2

'getVowel'이 인스턴스 메소드가 될 이유가 없으므로,이 경우 가장 좋은 해결책은'정적으로 '하는 것입니다. –

+0

다른 사람의 방법이 정체되어 있다고 말하는 사람은 아무 이유도 없습니다. 나는 그에게 차이점을 설명했다. – Dima

관련 문제