2016-12-11 60 views
-5

嘿,我不明白为什么当这个运行计算等于零。我已经将值分配给主方法中的变量。我错过了什么,因为我正试图弄清楚自己的头脑。另外我从一个非常简单的例子,我看到在线工作,我刚刚编辑它,以满足我的需求。我比较新,所以忍受着我,这是我的第二个月,我想继续这样做。无法从方法获得返回值(java)

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'方法不包含一个名为'defence'的变量,所以你不能返回它。 – Carcigenicate

+0

详细说明,具有相同名称的变量在方法之间是* not *共享的。让'防御'成为一个班级的成员来分享它。 – Carcigenicate

+0

我忘了补充说,变量int防御和atk已经在类中声明了,所以我对不完全清楚的道歉。谢谢您的帮助。 –

回答

0

当您使用方法变量设置攻击值时。所以你从不设定价值。你必须写这就像如下:

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

您有变量的防守同样的问题(因为他们在评论中说的)

0
int defense = def; 

因为你提供一个类型(int),你创建了一个新的局部变量。当你分配给它时,你将分配给新的局部变量,而不是类成员。

包含一个类型来创建一个新变量。在这种情况下将其删除以引用班级成员。

或者,更好,更明确一些你想要的变量:

this.defense = def;