2014-09-10 2 views
1

다른 특성을 가진 여러 문자가있는 프로그램을 만들려고했습니다. 클래스 문자로 정의하기 위해 (시도한) 메서드를 호출하는 문제가 발생했습니다.오류 : 메서드를 확인할 수 없습니다.

public class CharacterAttributes 
{ 
    public static void main(String[] args) 
    { 
     Character John = new Character("John", 0); 
     workout(5); 
    } 
} 
class Character 
{ 
    private String name; 
    private int Str; 
    public Character(String n, int initialStr) 
    { 
     name = n; 
     Str = initialStr; 
    } 
    public void workout(int byAmt) { 
     Str = Str + byAmt; 
    } 
} 

컴파일러는 "workout()"방법을 해결할 수 없다고 말했습니다.

감사합니다.

솔직히 많은 오류가 있습니다.

+4

입니다. John.workout (5) – Eran

답변

5

방법은 클래스 Character에 속해 있으므로 인스턴스 John에 대해 그것을 호출해야합니다 : 보조 노트로

John.workout(5); 

, john 대신 (소문자와 변수의 이름을 시작하는 일반적입니다 및 str 대신 Str)을 입력하고 유형을 나타내는 이름을 지정하십시오 (StrString이라는 힌트를 제공하지만 실제로는 int 임).

편집 : 귀하의 의견을 바탕으로

, 당신은 소요 있도록 당신이하고있는 방법, 당신은 CharacterAttributes 클래스에 메소드를 이동할 수 있습니다 workout 방법을 호출하고 변경하려는 경우 업데이트 될 Character 인스턴스에 대한 참조입니다.

John.workout(5) 

및 죄송하지만 규칙은 아주 나쁜 :

public static void main(String[] args) { 
    Character John = new Character("John", 0); 
    workout(John, 5); 
} 

public static void workout(Character character, int byAmt) { 
    // use a setter to set the attribute 
    character.setStr(character.getStr() + byAmt); 
} 

class Character { 
    private String name; 
    private int Str; 
    public Character(String n, int initialStr) { 
     name = n; 
     Str = initialStr; 
    } 
    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 
    public int getStr() { 
     return Str; 
    } 
    public void setStr(int str) { 
     Str = str; 
    } 
} 
+0

이 문제를 해결하기 전에 해결해야 할 주된 문제는 내가 만든 모든 문자에 대해 "운동"() 메서드를 작동 시키려고했습니다. 이 일을 어떻게 하죠? 그래도 고마워, 나는 그걸 생각하지 않으려 고 바보 같았다. –

+0

"workout()"메서드가 모든 문자에 대해 작동한다는 것은 무엇을 의미합니까? 그것은 당신이 만드는'Character' 객체에 대해 이미 "작동 중"입니다. – manouti

+0

나는이 메서드를 사용하여 내가 지정한 Character의 str 변수에 1을 더하고 싶습니다. 그래서 다른 Character Simon을 가지고 있다면 Simon의 str에 하나를 추가 할 것입니다. 만약 제가 요한에게 그 방법을 다시 불렀 더라면 그의 자질은 2가 될 것이고, 사이몬의 것은 1이 될 것입니다. –

1

당신은 (5)

Character John = new Character("John, 0); 

그래서 당신이 할 않았다 운동을 할 수 없다

public int Strpublic int str

+0

마누 티가 이미 말했다. – Emrage

+0

좋아, 할 것이다. 나가 지금 막 배우는 것을 시작하기 때문에 습관을 형성하고 싶지 않다. –

+0

그리고 여기에 할 일이 1 가지 더 있습니다. Str = Str + byAmt; Str + = byAmt 일 수 있습니다. 그냥 Str에 추가한다는 것을 의미합니다. 이것은 또한 존재합니다. "- ="은 양을 줄임을 의미합니다. – Emrage

관련 문제