我正在进行类似游戏的测验。我有两个数组(一个是状态,另一个是大写)。基本上它会询问用户随机状态下的资金。我想要,如果用户输入正确的状态,它就像好工作或其他什么,但我不知道如何比较用户输入到特定的阵列隔间。我试过.contains但没有用... 有什么帮助吗?
我的坏 - 我正在使用Java
例如
if(guess.equals(capitals[random]))
其中guess是字符串,大写字母是数组,随机数是随机数
答案 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