如何在类中使用方法内部计算的变量值?

时间:2014-02-22 23:56:39

标签: java methods dice

我对编程很新,并且不太了解。我一直在尝试构建一个简单的游戏,用户和计算机通过掷骰子来赢得积分。我的方法发布在下面。计算机每回合只能赚20点。

我的问题是我需要在调用和完成方法后记住变量computerTotal的值。我想确保无论何时完成computerTurn方法,我都可以在该方法之外使用该计算变量computerTotal。

我尝试在.java文件类中创建一个新的int(但在方法之外),然后在方法中使用该int来保存值,但是我收到有关需要静态的整数的错误?

这对我来说非常困惑。任何人都可以帮助我吗?

public static void computerTurn()     {

    System.out.println("Passed to Computer.");

    Die computerDie1, computerDie2;
    int computerRound, computerTotal;
    computerRound = 0;
    computerTotal = 0;


    while (computerTotal < 21){
    computerDie1 = new Die();
    computerDie2 = new Die();
    computerDie1.roll();
    computerDie2.roll();

    System.out.println("\n" + "CPU Die One: " + computerDie1 + ", CPU Die Two: " + computerDie2 + "\n");
    computerRound = computerDie1.getFaceValue() + computerDie2.getFaceValue();

    int cpuDie1Value;
    int cpuDie2Value;

    cpuDie1Value = computerDie1.getFaceValue();
    cpuDie2Value = computerDie2.getFaceValue();

    System.out.println ("Points rolled this round for the Computer: " + computerRound);

    computerTotal = computerTotal + computerRound;

    System.out.println ("Total points for the Computer: " + computerTotal + "\n");
    }

6 个答案:

答案 0 :(得分:0)

在方法中创建的任何变量都是“局部变量”,这意味着它们不能在方法之外使用。将静态变量放在方法之外以创建可在任何地方使用的“全局变量”。

答案 1 :(得分:0)

向您的班级添加方法

public static int getComputerTotal() { return ComputerTotal;}

然后你可以通过做类似的事情来获得课外的价值:

ComputerTurn();
ComputerTurn.getComputerTotal();

答案 2 :(得分:0)

将变量置于方法之外是正确的,但由于此方法为static(意味着它无法访问依赖于对象实例的变量),因此它只能访问静态变量。使用以下方法在方法之外的类中声明computerTotal

private static int computerTotal;

您应该对面向对象的编程以及static在Java中的含义进行一些研究。

答案 3 :(得分:0)

将computerTotal声明为类的成员变量,以便即使在函数外部也可以使用它的值。

class MyClass{
    private int computerTotal ;

    public  void function myFunction()
    {
         ........
         ......... // your calculations
         computerTotal = computerTotal + computerRound;      

    }

   public int getComputerTotal(){return     computerTotal ;}

}

答案 4 :(得分:0)

您必须在任何方法之外声明computertotal以保留它们。像这样:

public class name {
    int computertotal = 0; //v=can just uuse int computertotal;
    public void method() {
         while(computertotal < 20) {
                computertotal += 1;
         }
    }
}

现在变量被保存了!

答案 5 :(得分:0)

您可能需要添加一些setter和getter来从另一个类获取该int。

class NewClass {
   private int yourInt = 1;
}

它告诉你把它变成一个静态变量,因为你可能会在像

这样的语句中调用它
NewClass.yourInt;

,静态变量是与类关联的变量,而不是该类的对象。

Setter和getter是允许您从另一个类检索或设置私有值的方法。您可能希望将它们添加到声明int的NewClass中。塞特斯和吸气者看起来像这样。

设置器:

public void setYourInt(int newInt) {
   this.yourInt = newInt;
}

吸气剂:

public int getYourInt() {
   return this.yourInt;
}