程序未按预期运行

时间:2015-03-04 10:56:03

标签: java

我写了一个游戏代码,它给你一个单词给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));

}}

欢迎任何建议。

3 个答案:

答案 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类中所做的那样。