Java入门练习之四则运算

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());
        }
    }
}

运行结果

image
image

项目难点

该项目属于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型相加后一起输出了。运行结果如下图:
image

解决方案

  1. 不使用int类,改用Integer类,并使用自带的tostring方法将a和b转化为string类型,成功打印,这也是上贴代码使用的方法
  2. 使用printf格式化输出,代码如下:
    System.out.printf("%d%c%d=?\n",a,operator,b);
  3. 使用两行print和一个println打印,代码如下:
    System.out.print(a);
    System.out.print(operator);
    System.out.println(b + "=?");

解决方案还有很多,以上提供三个方法供新手参考。
***
以上内容如有不足,欢迎指正。

猜你喜欢

转载自www.cnblogs.com/GONGHAIXU/p/10658856.html