2013-04-09 5 views
0

내 함수 generatecode()를 사용할 때 정적을 사용할 수 없다는 오류를 되풀이합니다. 올바르게 분할했는지 알고 싶었습니다. 나는 새롭지 만 여전히 약간의 도움이 필요합니다. 이 경우에 새로운 클래스를 생성하는 방법을 보았습니다 : TestFile variable = new TestFile(); 나는 이것이 무엇을 의미하는지 전혀 몰랐다. 감사!내가 뭘 잘못 했니? 정적 오류 [Java]

public generatecode(String code){ 

public static String generatecode(String code){ 

이어야한다 그냥

당신은에 대한 반환 유형을 가지고 있지 않았다 참고 :

public class TestFile { 

String[] preps = { 
    "about", "above", "across", "after", "against", 
    "along", "among", "around", "at", "before", 
    "behind", "below", "beneath", "beside", "between", 
    "by", "concerning", "down", "during", "except", 
    "for", "from", "in", "inside", "into", 
    "like", "near", "of", "onto", "out", 
    "over", "through", "to", "toward", "under", 
    "up", "upon", "with", "within", "without" 
}; 

String[] errorpreps = { 
    "will", "would", "shall", "should", "can", 
    "could", "may", "might", "must", 
}; 

String[] question = { 
}; 

public static void main(String[] args) { 

    generatecode("hi"); 

}; 

public generatecode(String code){ 

    String prep = ""; 

    for (int i=0; i<preps.length; i++){ 

     prep = prep + preps[i]; 

    } 

    System.out.println(prep); 

    return prep; 

} 

public String printcode(String code){ 


    return ""; 

} 

    } 
+1

당신은/붙여 넣기 * 정확한 * 오류 메시지를 복사해야합니다에 취해 있었다. –

+0

하지만 문제는 평소입니다 -'generatecode'는 "인스턴스"메소드이고 호출을위한 인스턴스를 생성하고 사용하지 않고 정적 메소드'main'에서 호출합니다. –

+0

이것은 어떻게 upvote를 얻었습니까? –

답변

1

, 당신은 아직 TestFile 클래스의 인스턴스가 없습니다. 비 static 인 것을 참조하려면 클래스의 인스턴스가 필요합니다. 정확히 TestFile variable = new TestFile(); 줄이 무엇입니까 - TestFile의 새 인스턴스를 만듭니다.

그런 다음 인스턴스에 메서드를 호출 할 수 있습니다 : @ChrisCooney 이미 지적했듯이

variable.generatecode("hi"); 

, 그 방법에 대한 반환 형식이 없습니다. 모든 메소드에는 리턴 유형이 필요합니다. 이 경우 메서드가 반환하는 것이므로 메서드에서 String을 반환한다고 선언해야합니다.

+0

그래, 게다가 generatecode 선언에 String 반환 유형을 추가하십시오. –

+0

그래, 그걸로 가고 있었어 ... – rgettman

+0

오우 그 한 기능에 문자열을 추가하는 것을 잊어 버렸습니다. 그래, 나는 그것을 본다. – user2262111

1

귀하의 방법은 잘못된 접근 수정을가 방법 중 하나, 그래서이 정말 컴파일해서는 안됩니다.

왜 이렇게 생겼습니까?

글쎄, main(String[] args)과 같은 정적 메서드는 개체 인스턴스가 없을 때 실행될 수 있습니다. 그래서 당신은 호출 할 수

ClassName.method(); 

당신이 정적 메서드에서 인스턴스 메서드 호출을 시도, 이것이 당신이 존재하는 개체 인스턴스를 필요로 코드 기능을 사용하려는 것을 의미한다. 그러니 그냥 요약하자면 : 당신의 staticmain 방법에서

ClassName c = new ClassName(); 
c.instanceMethod(); // This is an instance method. 

ClassName.staticMethod(); // This is a static method. 
+0

코드를 실행할 위치를 명시하지 않았습니다. – user2262111

0

generate은 인스턴스 메소드이며 정적 메소드 인 main에서 호출하려고합니다. 이를 해결하려면, 당신은

(new TestFile()).generatecode("hi");

+0

나는 귀하의 방법을 살펴보고 해결할 수있었습니다. 이것은 클래스를 객체로 만들어야한다는 것을 내 눈을 열었습니다. 그런 다음 변수를 호출해야했습니다.다른 모든 메소드와 달리 새로운 객체를로드 할 위치를 알려주지 않았습니다. – user2262111

+0

내가 알아 낸 것은 main 함수 안에 있습니다. – user2262111

관련 문제