【问题标题】:Variables using between methods使用方法之间的变量
【发布时间】:2016-08-27 11:06:31
【问题描述】:

不幸的是,我是 java 编码的初学者。我现在的问题是为什么没有定义starteRunde() 方法中的变量rundepunkte。但实际上我已经在上面的方法中定义了它们不是吗?为什么我不能在以下方法中使用这些变量?

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();
}

...

【问题讨论】:

  • 这些变量只存在于定义它们的范围内,即 spielStarten 方法内。如果您需要在其他方法中访问这些变量,那么您需要将这些变量传递给这些方法,或者为这些变量提供类级别范围。

标签: java android variables android-studio methods


【解决方案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();
}

【讨论】:

    【解决方案2】:

    变量有一个作用域,简单地说,就是定义它们的代码块。因为你已经在一个方法中定义了这些变量,所以其他方法不能访问它们,因为它们超出了该方法的范围

    在这种情况下,您可以考虑将变量移至类级别:

    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);
    }
    

    我建议您对变量范围进行一些研究,以便更好地理解它。这里的例子并没有完全解释这个概念。

    【讨论】:

      【解决方案3】:

      Java 有 4 种不同的变量
      • 类变量
      • 实例变量
      • 局部变量
      • 参数变量

      每个变量都有 2 个属性:
      • 生命周期 = 变量存在的持续时间
      • scope = 程序中变量可访问(可以使用)的区域

      This Article为你详细讲解java中的变量作用域

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-30
        • 2017-02-15
        • 1970-01-01
        • 1970-01-01
        • 2018-08-08
        • 1970-01-01
        • 1970-01-01
        • 2010-10-27
        相关资源
        最近更新 更多