2016-12-11 3 views
-5

안녕하세요. 을 이해하지 못하는 이유는 계산이 0 일 때입니다. 이미 main 메소드의 변수에 값을 할당했습니다. 나가 그것을 알아 내려고하는 것을 시도해 나는 나의 머리를 끊기 때문에 나가는 무엇이 이는가? 또한 나는 정말로 간단한 예제를 통해 온라인에서 보았던 것을 보았습니다. 나는 그것을 필요에 맞게 편집했습니다. 나는 비교적 새롭기 때문에 나와 곰을 껴안을 수 있습니다. 두 번째 달이며 계속하고 싶습니다.메서드에서 반환 값을 가져올 수 없습니다.

public void myAtkStat(int myAtk) { 
    System.out.println("Atk:" + myAtk); 
    int meAtk = myAtk; 
} 

public int getmyAtk() { 
    return meAtk; 
} 

public void defStat(int def) { 
    System.out.println("Def :" + def); 
    int defense = def; 
} 

public int getDefense() { 
    return defense; 
} 

public void doCalculation() { 
    System.out.println((getmyAtk() * 2) - getDefense()); 
} 
+2

당신은 정말 다시 책으로 돌아가 변수 범위 지정에 대해 배울 필요가있다. 귀하의 코드는 거의 의미가 없습니다. 이것도 컴파일해서는 안됩니다. 귀하의'getDefense' 메소드는'defense'라는 변수를 포함하지 않으므로 반환 할 수 없습니다. – Carcigenicate

+0

좀 더 자세히 설명하기 위해 동일한 이름의 변수는 메소드간에 공유되지 않습니다. '방어 '를 클래스의 멤버로 삼아 주변을 공유하십시오. – Carcigenicate

+0

변수 int defense와 atk가 이미 클래스에 선언되어 있다는 것을 잊어 버렸기 때문에 사과하지 않으 셨습니다. 도와 주셔서 감사합니다. –

답변

0

공격 값을 설정할 때 메소드 변수를 사용 중입니다. 그래서 당신은 결코 가치를 설정하지 않았습니다. 다음과 같이 같은이를 작성해야 : 당신은 유형 (int)를 포함하기 때문에

0
int defense = def; 

(그들은 코멘트에 말했듯이)

public void myAtkStat (int myAtk) { 
    System.out.println("Atk:" + myAtk); 
    this.meAtk=myAtk; 
} 

당신은 변수 방어 같은 문제가 당신을 새 로컬 변수를 만들었습니다. 그런 다음 할당하면 클래스 멤버가 아닌 새 로컬 변수에 할당됩니다.

새 변수를 만들려면 유형을 포함하십시오. 이 경우에 그것을 제거하여 반원을 지명한다.

또는 더 나은 아직, 당신이 원하는 어떤 변수에 대한 명시 :

this.defense = def;