最后一行代码给出了错误p1无法解决。我相信这是因为它不在范围内,但我不确定如何解决这个问题。谢谢你的任何帮助。
switch (Player1)
{
case "Human":
{
HumanPlayer p1 = new HumanPlayer(sc, theGame);
break;
}
case "Simple":
{
SimpleComputerPlayer p1 = new SimpleComputerPlayer();
break;
}
case "Random":
{
RandomComputerPlayer p1 = new RandomComputerPlayer();
break;
}
case "Expert":
{
ExpertPlayer p1 = new ExpertPlayer();
break;
}
}
p1.setMySymbol(SquareStatus.CROSS);
答案 0 :(得分:1)
在交换机之外声明Player p1
。
Player p1;
switch (Player1) {...}
if(p1 != null) p1.setMySymbol(SquareStatus.CROSS);
答案 1 :(得分:0)
你已经在内部定义了HumanPlayer。在开关外定义它
答案 2 :(得分:0)
当您在函数内使用{}时,您正在创建其他范围级别,范围中定义的任何局部变量在范围之外都不可见。
答案 3 :(得分:0)
在这些方面尝试一些事情
webdriverFile = this.getClass().getResource("chromedriver.exe").toString();
然后可能
public static Object getPlayer()
{
String Player1 = "Human";
switch (Player1) {
case "Human": {
return new HumanPlayer();
}
case "Simple": {
return new SimpleComputerPlayer();
}
case "Random": {
return new RandomComputerPlayer();
}
case "Expert": {
return new ExpertPlayer();
}
}
return null;
}
可能需要做一些
worker.getPlayer().setMySymbol(SquareStatus.CROSS);
的某个地方。