Java使用在if语句中创建的变量

Java使用在if语句中创建的变量,java,oop,Java,Oop,我需要使用在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

我需要使用在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);

如果,则必须将声明移到
之外:

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

一些关于变量范围的阅读:

如果
,则必须将声明移到
之外:

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

一些关于变量作用域的阅读:

为了使其在
if
条件之外工作,您只需要在
if
条件之外声明
字符

/* 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);

为了使其在
if
条件之外工作,您只需要在
if
条件之外声明
字符

/* 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);

您只需在if之外声明
字符
。您只需在if之外声明
字符
。您可能还需要链接到(因为您已经修复了他的变量名)。感谢您的链接@Tom@RC. 如果我能再次调用你的服务,我不能调用任何玩家子类中的方法。你知道为什么吗?@duldi可以随意问一个新问题(也许),你可能还想链接到(因为你已经固定了他的变量名)。谢谢你的链接@Tom@RC. 如果我能再次调用你的服务,我不能调用任何玩家子类中的方法。你知道为什么吗?@duldi可以随便问一个新问题(也许)