我必须制作“谁想成为百万富翁”游戏。游戏必须使用文件(写入/创建包含所有信息的用户文件)。从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
答案 0 :(得分:2)
字符串应始终与equals进行比较。
我在这里写了理由:Why doesn’t == work on String?
if((userAnswer.equals("B")) && (ret==2)).
并改变其余的地方。
并且还考虑在您的情况下使用char。不是字符串。当您使用char
或Enum
处理单个字母时会增加您的计划效果。
答案 1 :(得分:0)
使用equals()
代替==
来比较Strings
原因
{p}equals()
类中存在 java.lang.Object
方法,并且需要检查对象状态的等效性!这意味着,对象的内容。期望==
运算符检查实际对象实例是否相同。
即,
if((userAnswer.equals("B")) && (ret==2))