Java入门练习之四则运算
项目目的
制作一个Java控制台程序,让他可以随机生成四则运算,并针对用户的输入判断对错。
项目分析
该项目本质上是一个四则运算出题器,可以创建一个Question类,其中应包含两个运算数(随机生成)和对应的答案,除此以外还需要实现随机产生加减乘除运算的功能。
项目实现
Question类
public class Question {
private Integer a,b;
private int answer;
private char operator;
Question(){
//随机生成两个运算数
a = (int)(1+Math.random()*10000);
b = (int)(1+Math.random()*10000);
//根据之前的随机结果生成对应运算符并计算出答案
if(a < 2500){
operator = '+';
answer = a+b;
}
else if(a < 5000) {
operator = '-';
answer = a - b;
}
else if(a < 7500) {
operator = '*';
answer = a * b;
}
else {
operator = '/';
answer = a / b;
}
}
public int getA(){
return a;
}
public int getB(){
return b;
}
public int getAnswer(){
return answer;
}
//打印题目
public void putQuestion(){
System.out.println(a.toString() + operator + b.toString() + "=?");
System.out.println("请填入\'?\'处的数字,只取整数,小数点后截断");
}
}
测试类
import java.util.Scanner;
public class Test {
private static int yourAnswer;
public static void main(String []args){
Scanner sc = new Scanner(System.in);
Question q = new Question();
q.putQuestion();
yourAnswer = sc.nextInt();
if(yourAnswer == q.getAnswer()){
System.out.println("回答正确!");
}
else {
System.out.println("回答错误");
System.out.println("正确答案:" + q.getAnswer());
}
}
}
运行结果
项目难点
该项目属于java的入门项目,没有太大的难度,中间遇到的一个小问题在于输出题目时,我当时写的代码是这样的
private int a,b;
public void putQuestion(){
System.out.println(a + operator + b + "=?");
System.out.println("请填入\'?\'处的数字,只取整数,小数点后截断");
}
在打印题目时本意是打印成: xxx(a)+ xxx(b) = ?
但编译器将operator(char)型隐式转换为int,最终打印的结果将a、operator、b三个int型相加后一起输出了。运行结果如下图:
解决方案
- 不使用int类,改用Integer类,并使用自带的tostring方法将a和b转化为string类型,成功打印,这也是上贴代码使用的方法
- 使用printf格式化输出,代码如下:
System.out.printf("%d%c%d=?\n",a,operator,b);
- 使用两行print和一个println打印,代码如下:
System.out.print(a);
System.out.print(operator);
System.out.println(b + "=?");
解决方案还有很多,以上提供三个方法供新手参考。
***
以上内容如有不足,欢迎指正。