我正在学习Lubomir Stanchev的" 通过游戏学习Java ",这个问题我无法解决.
我们将随机要求玩家添加,乘以或减去一位数字(我们跳过除法,因为除以两个数字的结果不是整数).游戏应该询问10个数学问题并记录答案.最后,游戏应该告诉玩家他们做得多好,也就是他们正确回答了多少问题.
这就是我所拥有的:
import java.util.Scanner;
public class Arithmetic {
public static void main(String args[]){
Scanner keyboard = new Scanner(System.in);
int i, x, y, z, answer, a, counter = 0;
char sign;
for(i = 0; i < 10; i++) {
x = (int)(Math.random() * 10);
y = (int)(Math.random() * 10);
a = (int)(Math.random() * 3);//random sign
if(a==0){
sign = '+';
} else if(a == 1) {
sign = '-';
} else {
sign = '*';
}
System.out.print(x + " " + sign + " " + y + " = ");
z = keyboard.nextInt();
answer = x + sign + y;
System.out.println(answer);
if(z == answer){
System.out.println("Correct");
counter++;
} else {
System.out.println("Wrong");
}
}
System.out.println("You answered "+counter+" questions correctly");
}
}
Run Code Online (Sandbox Code Playgroud)
变量答案的值存在问题.它不会计算表达式,因为x和y是整数,而变量符号是char.我来自JS所以我发现这很奇怪.在JS中,无论类型如何,表达式都会自动计算或连接.我在第3章,所以我没有学过parseInt东西,我认为它不适用于char.
谢谢您的帮助.
这是我最新的答案:
public class Arithmetic {
public static void main(String args[]){
Scanner keyboard = new Scanner(System.in);
int i, x, y, z, answer, a, counter=0;
char sign;
for(i=0;i<10;i++){
x = (int)(Math.random() * 10);
y = (int)(Math.random() * 10);
a = (int)(Math.random() * 3);//random sign
if(a==0){
sign = '+';
answer = x + y;
} else if(a==1) {
sign = '-';
answer = x - y;
} else {
sign = '*';
answer = x * y;
}
System.out.print(x+" "+sign+" "+y+" = ");
z = keyboard.nextInt();
if(z==answer){
System.out.println("Correct");
counter++;
} else {
System.out.println("Wrong");
}
}
System.out.println("You answered "+counter+" questions correctly");
}
}
Run Code Online (Sandbox Code Playgroud)
它确实编译!!!
您需要在if/else上执行if/else sign并相应调整answer:
if (sign == '+') {
answer = x + y;
} else if (sign == '-') {
answer = x - y;
} else if (sign == '*') {
answer = x * y;
} else {
System.err.println("Unknown operator: " + sign);
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用switch声明:
switch(sign) {
case('+'):
answer = x + y;
break;
case('-'):
answer = x - y;
break;
case('*'):
answer = x * y;
break;
default:
System.err.println("Unknown operator: " + sign);
break;
}
Run Code Online (Sandbox Code Playgroud)