JAVA - 如果双重条件错误

时间:2013-12-29 14:04:44

标签: java if-statement double conditional-statements

我必须制作“谁想成为百万富翁”游戏。游戏必须使用文件(写入/创建包含所有信息的用户文件)。从txt文件中随机挑选问题并保存在“intrebareSIraspuns [6] [15]”中(6 - > 1个问题,4个答案,1个正确答案; 15个 - >问题)。这些问题被命名为“questionNr”,并在每个正确答案后递增。    我的问题是当用户必须为问题提供正确答案时。用户必须在控制台中键入答案的相应字母(A,B,C,D),但是当输入正确的答案时,结果总是错误的。    我会把代码放到正确的问题验证中,为了检查问题的位置和控制台的输出,我已经做了一些更长的时间。

这是代码:

    /*                      *
     *                      *
     *     ANSWER CHECK     *
     *                      *
     *                      *
     */

public int check()
{
    Scanner input=new Scanner(System.in);

    int ret=0;

    System.out.println("Type your answer: ");
    userAnswer=input.next();


    if(intrebareSIraspuns[5][questionNr].equals(intrebareSIraspuns[1][questionNr]))
    {
        ret=1;
    }

    if(intrebareSIraspuns[5][questionNr].equals(intrebareSIraspuns[2][questionNr]))
    {
        ret=2;
    }

    if(intrebareSIraspuns[5][questionNr].equals(intrebareSIraspuns[3][questionNr]))
    {
        ret=3;
    }

    if(intrebareSIraspuns[5][questionNr].equals(intrebareSIraspuns[4][questionNr]))
    {
        ret=4;
    }

    System.out.println("Return = " + ret);
    System.out.println("User Answer =" + userAnswer + ".");

    if((userAnswer=="A") && (ret==1))
    {
        answerVar=1;
        System.out.println("The corect answer is: A. " + intrebareSIraspuns[1][questionNr]);
    }
    else
        if((userAnswer=="B") && (ret==2))
        {
            answerVar=2;
            System.out.println("The corect answer is: B. " + intrebareSIraspuns[2][questionNr]);
        }
        else
            if((userAnswer=="C") && (ret==3))
            {
                answerVar=3;
                System.out.println("The corect answer is: C. " + intrebareSIraspuns[3][questionNr]);
            }
            else
                if((userAnswer=="D") && (ret==4))
                {
                    answerVar=4;
                    System.out.println("The corect answer is: D. " + intrebareSIraspuns[4][questionNr]);
                }
                else
                {
                    answerVar=5;
                    System.out.println("Your answer is wrong!");
                    if(ret==1)
                    {
                        answerVar=6;
                        System.out.print(" The corect answer was: A. " + intrebareSIraspuns[1][questionNr] + "\n");
                    }
                    else
                        if(ret==2)
                        {
                            answerVar=7;
                            System.out.print(" The corect answer was: B. " + intrebareSIraspuns[2][questionNr] + "\n");
                        }
                        else
                            if(ret==3)
                            {
                                answerVar=8;
                                System.out.print(" The corect answer was: C. " + intrebareSIraspuns[3][questionNr] + "\n");
                            }
                            else
                                if(ret==4)
                                {
                                    answerVar=9;
                                    System.out.print(" The corect answer was: D. " + intrebareSIraspuns[4][questionNr] + "\n");
                                }
                }
    input.close();
    return answerVar;
}

控制台输出是:

0081 Whose return to 'EastEnders' in 2004 sparked a 560 megawatt power surge on the national grid?

    A. Filthy Fred

    B. Smutty Sam

    C. Grubby Gordon

    D. Dirty Den

ANSWER. Dirty Den

Type your answer: 
D

Return = 4

User Answer =D.

Your answer is wrong!

 The corect answer was: D. Dirty Den

2 个答案:

答案 0 :(得分:2)

字符串应始终与equals进行比较。

我在这里写了理由:Why doesn’t == work on String?

  if((userAnswer.equals("B")) && (ret==2)).

并改变其余的地方。

并且还考虑在您的情况下使用char。不是字符串。当您使用charEnum处理单个字母时会增加您的计划效果。

答案 1 :(得分:0)

使用equals()代替==来比较Strings

原因

{p} equals()类中存在

java.lang.Object方法,并且需要检查对象状态的等效性!这意味着,对象的内容。期望==运算符检查实际对象实例是否相同。

即,

if((userAnswer.equals("B")) && (ret==2))