Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 编译器给我一个';无法到达的状态';错误_Java_Compiler Errors - Fatal编程技术网

Java 编译器给我一个';无法到达的状态';错误

Java 编译器给我一个';无法到达的状态';错误,java,compiler-errors,Java,Compiler Errors,这是我代码中的一个方法,当我试图编译它时,它会抛出一个“无法访问的语句”错误 public static boolean whoareyou(String player) { boolean playerwhat; if (player.equalsIgnoreCase("Player 1")) { return true; } else { return false; } return player

这是我代码中的一个方法,当我试图编译它时,它会抛出一个“无法访问的语句”错误

public static boolean whoareyou(String player)
{
    boolean playerwhat;
    if (player.equalsIgnoreCase("Player 1"))
    {
        return true;
    }
    else
    {
        return false;
    }
    return playerwhat;
}
确切的错误是:

java:82: error: unreachable statement
                return playerwhat;
                ^
然后,我尝试使用以下代码中返回的布尔值:

public static int questions(int diceroll, int[] scorep1)
{
 String wanttocont = " ";
 boolean playerwhat;
 for (int i = 0; i <= 6; i++)
 {
   while (!wanttocont.equalsIgnoreCase("No"))
   {
    wanttocont = input("Do you wish to continue?"); 
    // boolean playerwhat; wasn't sure to declare here or outside loop
    if (diceroll == 1)
    {
       String textinput = input("What's 9+10?");
       int ans1 = Integer.parseInt(textinput);
       output("That's certainly an interesting answer.");
       if (ans1 == 19)
       {
          if (playerwhat = true)
          {
             output("Fantastic answer player 1, that's correct!");
             diceroll = dicethrow(diceroll);
             scorep1[0] = scorep1[0] + diceroll;
             output("Move forward " + diceroll + " squares. You are on square " + scorep1[0]);
          }
          else if (playerwhat = false)
          {
             output("Fantastic answer player 2, that's correct!");
             diceroll = dicethrow(diceroll);
             scorep1[1] = scorep1[1] + diceroll;
             output("Move forward " + diceroll + " squares. You are on square " + scorep1[1]);
          }
    } // END if diceroll is 1
   } // END while wanttocont
 } // END for loop
} // END questions
公共静态整数问题(整数掷骰子,整数[]分数P1)
{
字符串wanttocont=“”;
布尔playerwhat;

for(int i=0;i
return playerwhat;
永远无法到达,因为
if
else
子句将返回
true
false
。因此您应该删除此语句。
playerwhat
变量不是必需的

顺便说一句,您的方法可以替换为一行方法:

public static boolean whoareyou(String player)
{
    return player.equalsIgnoreCase("Player 1");
}
我会将此方法重命名为更具描述性的方法,例如
isFirstPlayer

编辑:

你从不打电话给
你是谁
是你的
问题
方法。你应该叫它:

替换

if (playerwhat = true) // this is assigning true to that variable, not comparing it to true


只需以这种方式更新代码

public static boolean whoareyou(String player)
{
    boolean playerwhat;
    if (player.equalsIgnoreCase("Player 1"))
    {
        playerwhat = true;
    }
    else
    {
        playerwhat = false;
    }
    return playerwhat;
}
试试这个:

public static boolean whoareyou(String player)
{
    return player.equalsIgnoreCase("Player 1");
}
你有这个问题,因为:


从未到达。您可以通过“if”-或“else”退出函数-部分。

你是说要删除
返回播放器什么;
你是谁
方法的末尾?如果我这样做,那么就没有任何东西被传递到
问题
方法,就像我在回答了一个问题后说我是玩家2,它仍然会说
奇妙的回答玩家1,这是正确的!
当它发出声音时我真的会说
player 2
@Overclock请参见编辑。这是你的
问题
方法的另一个问题。非常感谢!我对你说的话做了一些调整,但效果确实很好。我更喜欢
if(“player 1”。equalsIgnoreCase(player))
@SpringLearner同意我们也可以这样做,但我只是按照他的原始代码发布
public static boolean whoareyou(String player)
{
    return player.equalsIgnoreCase("Player 1");
}
return player what;