如何将字符串与字符串数组的特定区域进行比较?

时间:2014-05-13 21:26:29

标签: java arrays string compare

我正在进行类似游戏的测验。我有两个数组(一个是状态,另一个是大写)。基本上它会询问用户随机状态下的资金。我想要,如果用户输入正确的状态,它就像好工作或其他什么,但我不知道如何比较用户输入到特定的阵列隔间。我试过.contains但没有用... 有什么帮助吗?

我的坏 - 我正在使用Java

例如

if(guess.equals(capitals[random]))

其中guess是字符串,大写字母是数组,随机数是随机数

2 个答案:

答案 0 :(得分:1)

基本上你想要一个映射String -> String (State -> Capital)。这可以使用Map<String, String>或创建State类来完成,该类将包含其名称及其作为属性的资本。

但是在我看来,最好的选择是使用enum,因为您知道有50个州。这是一个小例子。

public class Test {  

    static final State[] states = State.values();
    static Random r = new Random();
    static Scanner sc = new Scanner(System.in);

    public static void main (String[] args){
        State random = states[r.nextInt(states.length)];
        random.askQuestion();
        String answer = sc.nextLine();
        if(answer.equals(random.getCapital())){
            System.out.println("Congrats");
        } else {
            System.out.println("Not really");
        }       
    }   
}

enum State {
    //Some states, add the other ones
    ALABAMA("Montgomery"),
    ALASKA("Juneau");

    private final String capital;

    private State(String capital){
        this.capital = capital;
    }

    public String getCapital(){
        return this.capital;
    }

    public void askQuestion(){
        System.out.println("What capital goes with "+this.name()+"?");
    }
}

答案 1 :(得分:0)

与此相似的逻辑应该有效。您希望将用户输入保存到String变量,然后将其与n大小的数组进行比较。

for(int i=0; i<arrayName.length();i++)
{
     if(userinputString.equalsIgnorCase(arrayName[i])
     {
          System.out.println("HUrray!");
     }//end if

}//end for

好的,所以你以某种方式产生一个随机数,然后需要将输入与大写数组中的字符串进行比较,以获得该随机数/

我假设数组是有序的,大写[10]为你提供州[10]的资金。

如果是这样,只需将索引保存到变量即可。

int ranNum=RandomNumFunction();

然后看看是否

if(capitals[ranNum].equalsIgnoreCase(userInput))
//do something