我写了一个游戏代码,它给你一个单词给unscrabble.But,没有得到"你赢了",即使写了正确的单词。我得到的只是"错误答案"。请找出错误并提出改进方法。
import java.util.*;
public class game {
public static void main(String args[]){
Scanner input=new Scanner(System.in);
Random rand=new Random();
//THE WORD DIRECTORY
String[][] list=new String[][]{
{"google","a search engine"},
{"facebook","a social networking site"},
{"java", "this language"},
};
//CHOOSING THRE WORD
int n=rand.nextInt(3);
String theword=list[n][0];
String thehint=list[n][1];
//JUMBLING THE WORD
String jumbledword=theword;
char a[] = jumbledword.toCharArray();
for(int i=0;i<jumbledword.length();i++){
int input1=rand.nextInt(jumbledword.length());
int input2=rand.nextInt(jumbledword.length());
char temp=a[input1];
a[input1]=a[input2];
a[input2]=temp;
}
//THE GAME
System.out.println("\t\tWELCOME TO JUMBLE WORD");
System.out.println("1.Unscrabble the given word");
System.out.println("2.Press 'hint'for hint");
System.out.println("3.Press 'quit' to quit");
System.out.print("The word:" );
System.out.println(a);
String guess;
do{ guess=input.nextLine();
if(guess==theword){
System.out.println("YOU WIN");
}
else if(guess=="hint"){
System.out.println(thehint);
}
else if(guess=="quit"){
System.out.println("Better luck next time. The answer is :");
System.out.println(theword);
}
else{
System.out.println("Wrong answer .Try again");
}
}while(!guess.equals("quit")&&!guess.equals(theword));
}}
欢迎任何建议。
答案 0 :(得分:2)
使用equals
课程的String
方法比较两个String
的内容。
在两个类实例上使用==
只会比较它们是否是相同的对象。
例如:
if(guess.equals(theword))
答案 1 :(得分:2)
==运算符用于检查对象是否相等,而不是值。您想要使用equals方法。
而不是
if(guess==theword){
使用
if(guess.equals(theword)){
进一步详细说明,想象你有三个字符串:
String s1 = new String("abc");
String s2 = s1;
String s3 = new String("abc");
在这种情况下,会出现以下结果:
s1.equals(s2); // true, same value
s1 == s2; // true, same object
s1.equals(s3); // true, same value
s1 == s3; // false, different objects
答案 2 :(得分:1)
使用equals
代替==
。
将if语句更改为if(guess.equals(theword)){
<强>释强>:
在Java中,当“==”运算符用于比较2个对象时,它会检查对象是否引用内存中的相同位置。换句话说,它检查2个对象名称是否基本上引用了相同的内存位置。
可以将 equals
方法重写为对象的比较内容。正如String类中所做的那样。