Java 无法访问代码的问题

Java 无法访问代码的问题,java,Java,正在尝试将山羊添加到arraylist。我在评论中写下了我的错误。 无法将Arraylist解析为类型。 和无法访问的代码 ● 如果角色已经被猜到,它应该抛出一个IllegalArgumentException 留言说这封信已经猜到了 ● 如果字符不是a-Z中的字母(借用字母中的If代码 构造函数(模型类下的第6步),它应该抛出 IllegalArgumentException,其中有一条消息说猜测应该是一封信 从A-Z package edu.htc.java1.phrasegame; imp

正在尝试将山羊添加到arraylist。我在评论中写下了我的错误。 无法将Arraylist解析为类型。 和无法访问的代码

● 如果角色已经被猜到,它应该抛出一个IllegalArgumentException 留言说这封信已经猜到了

● 如果字符不是a-Z中的字母(借用字母中的If代码 构造函数(模型类下的第6步),它应该抛出 IllegalArgumentException,其中有一条消息说猜测应该是一封信 从A-Z

package edu.htc.java1.phrasegame;
import edu.htc.java1.phrasegame.model.*;

import java.util.ArrayList;

public class PhraseGameController { 

    private Phrase currentPhrase; 
    private ArrayList<Character> guessed; 




    public boolean doPlayerGuess(Character play) {
      Character goat = Character.toUpperCase(play);
        if(guessed.contains(play)){
            throw new IllegalStateException("the letter was already guessed");}
            else if {String.valueOf(play).matches("[A-Z]"); 
            throw new IllegalStateException("the guess should be a letter from A­Z");

        }
        guessed.add(goat);  // Unreachable Code
        return currentPhrase.guessLetter(goat);

    }






    public PhraseGameController(){
    currentPhrase = new Phrase("This is only a test");
    guessed = new ArrayList<Character>();       ///Arraylist could not be resolved to Type
    }



     public Phrase getCurrentPhrase() {  
        return currentPhrase;
    }
    public void setCurrentPhrase(Phrase currentPhrase) {
        this.currentPhrase = currentPhrase;
    }

    public void setGuessed(ArrayList<Character> guessed) {
        this.guessed = guessed;
    }
    public ArrayList<Character> getGuessed() { 
        return guessed;
    }
}
包edu.htc.java1.phrasegame;
导入edu.htc.java1.phrasegame.model.*;
导入java.util.ArrayList;
公共类短语游戏控制器{
私人用语;
私人ArrayList猜测;
公共布尔doPlayerGuess(角色扮演){
角色山羊=角色.toUpperCase(play);
如果(猜测。包含(播放)){
抛出新的IllegalStateException(“这封信已经猜到了”);}
如果{String.valueOf(play).matches(“[A-Z]”)匹配,则为else;
抛出新的非法州例外(“猜测应该是来自a-Z的一封信”);
}
猜测。添加(山羊);//无法访问的代码
返回currentphase.guessLetter(goat);
}
公共短语gamecontroller(){
CurrentPhase=新短语(“这只是一个测试”);
guessed=new ArrayList();///ArrayList无法解析为类型
}
公共短语GetCurrentPhase(){
返回当前短语;
}
公共无效SetCurrentPhase(短语CurrentPhase){
this.currentphase=currentphase;
}
已猜测公共无效集(已猜测ArrayList){
猜到了;
}
公共数组列表getGuessed(){
返回猜测;
}
}

>

包edu.htc.java1.phrasegame.model;
> 
>导入java.util.ArrayList;
> 
>公共类短语{
>//公共字符串短语;ArrayList字母=新ArrayList();私有字符串短语;
>     
> 
>公共短语(字符串短语){Phrase=Phrase.toUpperCase()////
>(char c:phrase.toCharArray()){letters.add(new)的问题
>字母(c));}this.phrase=phrase;}public void
>setPhrase(字符串短语){this.phrase=phrase;}
> 
>公共字符串getPhrase(){return phrase;}
> 
>public ArrayList getLetters(){return letters;}
> 
>公共布尔猜测字母(字符c){
>布尔字母=假;
>             
>//循环浏览您的信件列表
>(字母l:字母){
>//如果信件列表包含与您收到的信件相同的信件,则返回true
>if(l.getLetter()==c){
>l.取消隐藏();
>foundLetter=true;
>                 }
>             }
> 
>//我们没有找到这封信,所以我们返回false
>返回foundLetter;}}
这不是你想象的那样

这就是说,如果没有猜到值,那么(始终)查看播放是否匹配
A-Z
,忽略结果,然后(在下一行中)始终抛出
IllegalStateException

因此,无论此时发生什么,都会抛出一个IllegalStateException,因此永远无法到达方法末尾的return语句

您几乎肯定希望将上述代码包装在第二个if语句中,格式与:

else if(otherThingToCheck()) {
    //Code to execute if otherThingToCheck() is true
}

如果我那样做。它告诉我删除if。虽然不可访问的代码错误已经消失,但是什么告诉您删除if?您得到的确切信息是什么?对于“ArrayList无法解析为类型”问题,您不应该在创建对象时省略类型吗?猜测=新的ArrayList();检查他们在集合中使用基元类型的方式:您的代码无法访问,因为'if'和'else'子句都抛出异常。因为无论输入是什么,您都抛出了一个异常,因此退出了该方法,因此无法访问if/else之后的任何代码。我想这只是一个输入错误。我有Arraylist。。实际上,当ArrayList。谢谢你让我看。我不会跟在你后面不可接近的?我将编辑它以显示我现在拥有的内容@Roddyof Frozenpeas我在哪里可以合并Guess.add(goat)?@user3381466和您当前的代码,正如您现在发布的,
Guess.add(goat)
不是不可访问的。您当前有一个
else if
您以前有一个
else
,这导致无法访问该行。
else {String.valueOf(play).matches("[A-Z]"); 
else if(otherThingToCheck()) {
    //Code to execute if otherThingToCheck() is true
}