我想制作一个基本游戏,其中生成两个随机数,用户必须输入正确的产品。
我做错了什么?感谢
import java.util.Scanner;
import java.awt.*;
public class Userinput {
public static void main (String[] args) {
String firstName;
//Create scanner to obtain user input
Scanner scanner1 = new Scanner( System.in );
int a, b, correctAnswer;
a=(int) (Math.random()*10);
b=(int) (Math.random()*10);
//obtain user input
System.out.println("Enter your first name: ");
firstName = scanner1.nextLine();
//output information
System.out.print("Hello " + firstName + " ");
System.out.println("what is " + a +" times " + b);
String answer1 = scanner1.nextLine();
correctAnswer = a * b;
if ((answer1).equals(correctAnswer))
System.out.println("Correct!");
else if (!(answer1).equals ("correctAnswer"));
System.out.println("Incorrect!");
}
}
答案 0 :(得分:5)
您正在将String
(answer1
)与Integer
(correctAnswer
)进行比较。那是比较苹果和橘子,它们永远不会相同。
您需要将String
转换为int
:
Integer.parseInt(answer1)
如果answer1
无法解析为整数,则可能会失败;或将int
转换为String
:
Integer.toString(correctAnswer)
然后比较它们:
Integer.parseInt(answer1) == correctAnswer // You can use == because int is primitive.
or
answer1.equals(Integer.toString(correctAnswer))
答案 1 :(得分:0)
这就是问题所在:
if ((answer1).equals(correctAnswer))
System.out.println("Correct!");
else if (!(answer1).equals ("correctAnswer"));
System.out.println("Incorrect!");
}
请改为:
Integer answer = Integer.parseInt( answer1 );
if (answer1.equals(correctAnswer)) {
System.out.println("Correct!");
} else {
System.out.println("Incorrect!");
}
目前的写作方式,"不正确!"因为else if
上的分号,所以总会被打印出来。此外,它将answer1
与文字字符串" correctAnswer"进行比较。因为报价。由于它们甚至不是相同的类型(int和String),equals(...)
返回false。我还建议使用花括号。它有助于缓解其中一些问题。
答案 2 :(得分:0)
试试这个:
int answer1 = scanner1.nextInt();
int correctAnswer = a*b;
if (answer1==correctAnswer) {
System.out.println("Correct!");
} else {
System.out.println("Incorrect!");
}
您的代码存在一些问题,主要与混合使用字符串和整数有关。 Here is a good explanation如何比较不同的数据类型。我建议您使用Scanner.nextInt()来保存必须将字符串转换为整数。
我还建议您不要省略if语句中的大括号。它使您的代码更易于阅读,并且可以避免一些混淆,特别是当您刚开始使用Java时。