【问题标题】:Java-Using a variable created in an if statementJava-使用在 if 语句中创建的变量
【发布时间】:2016-03-16 18:10:43
【问题描述】:

我需要使用我在 if 语句中创建的变量。但是,我的代码无法编译。我只需要在编译它的同时保持功能不变的帮助。

这是代码片段

else if (in.equals("Monster") && in1.equals("Orc"))
  { Players Character = new Orc();
    System.out.println("You have chosen "+in+" type "+in1+". Monsters in general are more attack orientated");
  }
  Character.addAttack(5);

【问题讨论】:

  • 你只需要在你的 if 之外声明Character

标签: java oop


【解决方案1】:

为了使它在您的if 条件之外工作,您只需在您的if 条件之外声明Character

/* Declare it here */
Players Character = null;

if(...) {
/* Do Something Here */
} else if (in.equals("Monster") && in1.equals("Orc")) { 
    Character = new Orc();
    System.out.println("You have chosen " + in + " type " + 
                       in1 + ". Monsters in general are more attack orientated");
}

/* Now you can use it here */
Character.addAttack(5);

【讨论】:

    【解决方案2】:

    你必须把声明移到if之外:

    Players character = null; 
    // ...
    else if (in.equals("Monster") && in1.equals("Orc"))
    { 
        character = new Orc();
        System.out.println("You have chosen "+in+" type "+in1+". Monsters in general are more attack orientated");
    }
    // TODO: check for null
    character.addAttack(5);
    

    一些关于变量作用域的阅读:http://www.cs.berkeley.edu/~jrs/4/lec/08

    【讨论】:

    • 您可能还想链接到naming conventions(因为您已经修复了他的变量名)。
    • 感谢@Tom 的链接
    • @RC。如果我可以再次调用您的服务,我将无法调用 Player 的任何子类中的方法。你知道为什么吗?
    • @duldi 随时提出一个新问题(也许是stackoverflow.com/questions/2701182/…
    猜你喜欢
    • 1970-01-01
    • 2014-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多