不幸的是,我是使用java编码的初学者。我现在的问题是为什么runde
方法中的变量punkte
,starteRunde()
未定义。但实际上我已经用上面的方法定义了它们并不是我吗?为什么我不能在以下方法中使用这些变量?
public class GameActivity extends Activity implements View.OnClickListener{
private void spielStarten(){
boolean spielLaeuft = true;
int runde = 0;
int punkte;
punkte = 0;
starteRunde();
}
private void starteRunde(){
runde = runde + 1;
int muecken = runde * 10;
int gefangeneMuecken = 0;
int zeit = 60;
bildschirmAktualisieren();
}
...
答案 0 :(得分:1)
因为它们不是全球性的。要在所有方法中使用这些变量,请在类级别定义它们。
public class GameActivity extends Activity implements View.OnClickListener{
boolean spielLaeuft = true;
int runde = 0;
int punkte;
private void spielStarten(){
punkte = 0;
starteRunde();
}
private void starteRunde(){
runde = runde + 1;
int muecken = runde * 10;
int gefangeneMuecken = 0;
int zeit = 60;
bildschirmAktualisieren();
}
答案 1 :(得分:0)
变量有一个范围,简单地说就是它们所定义的代码块。因为你已经在方法中定义了这些变量,所以其他方法不能访问它们是因为它们超出了该方法的范围。
在这种情况下,您可以考虑将变量移动到类级别:
public class GameActivity extends Activity implements View.OnClickListener{
boolean spielLaeuft;
int runde;
int punkte;
int muecken;
int gefangeneMuecken;
int zeit;
private void spielStarten(){
spielLaeuft = true;
runde = 0;
punkte = 0;
starteRunde();
}
private void starteRunde(){
runde = runde + 1;
muecken = runde * 10;
gefangeneMuecken = 0;
zeit = 60;
bildschirmAktualisieren();
}
}
您还可以选择将变量作为参数传递给方法,因此,如果它可以正常工作,您也可以像这样编码starteRunde
而不是在类级别定义以下变量更适合您的下一个方法调用:
private void starteRunde(){
int runde = runde + 1;
int muecken = runde * 10;
int gefangeneMuecken = 0;
int zeit = 60;
bildschirmAktualisieren(runde, meucken, gefangeneMuecken, zeit);
}
我建议您对变量范围进行一些研究,以便更好地理解它。这里的例子没有完全解释这个概念。
答案 2 :(得分:0)
Java有4种不同的变量
•类变量
•实例变量
•局部变量
•参数变量
每个变量都有2个属性:
•生命时间=变量存在的持续时间
•scope =程序中可以访问变量(可以使用)的区域
This Article向您解释java
中变量范围的更多细节