这是本学期java课中实验大纲里的第一个实验,这里简单做了一个无用户界面版本。

import java.util.Random;
import java.util.Scanner; public class MathTest { public static void main(String[] args) {
// TODO Auto-generated method stub double right = 0;
double wrong = 0;
/*Scanner sc2 = new Scanner(System.in);
int num2 = sc2.nextInt();*/
for (int i = 0; i < 10; i++) {
System.out.println("第"+(i+1)+"道题,请在下方输入答案:"); //生成两个随机数
Random r1 = new Random();
int x = r1.nextInt(10)+1;
Random r2 = new Random();
int y = r2.nextInt(10)+1;
//生成随机运算符 + - * /
Random r3 = new Random();
int z = r3.nextInt(4);
char[] chs = {'+','-','*','/'};
String Operator = String.valueOf(chs[z]); //生成题目
if(Operator.equals("+")){
System.out.println(x+"+"+y+"=");
boolean b = add(x,y);
if(b == true){
right++;System.out.println("bingo! ");
}else{
wrong++;System.out.println("oh~no ");
}
System.out.println("the right answer: "+(x+y)); }else if(Operator.equals("-")){
System.out.println(x+"-"+y+"=");
boolean b =minus(x,y);
if(b == true){
right++;System.out.println("bingo! ");
}else{
wrong++;System.out.println("oh~no ");
}
System.out.println("the right answer: "+(x-y)); }else if(Operator.equals("*")){
System.out.println(x+"×"+y+"=");
boolean b =times(x,y);
if(b == true){
right++;System.out.println("bingo! ");
}else{
wrong++;System.out.println("oh~no ");
}
System.out.println("the right answer: "+(x*y));
}else{
System.out.println(x+"÷"+y+"=");
boolean b =divide(x,y);
if(b == true){
right++;System.out.println("bingo! ");
}else{
wrong++;System.out.println("oh~no ");
}
System.out.println("the right answer: "+((float)x /(float) y));
}
System.out.println("-------------------------------");
}
System.out.println("您一共做对了"+right+"道题.");
System.out.println("您一共做错了"+wrong+"道题.");
if(wrong > 0){
System.out.println("正确率为"+(right/(wrong+right))*100+"%");
}else{
System.out.println("没法除了啊 。。。。");
}
} private static boolean add(int x,int y) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int num1 = sc.nextInt();
int result = x + y;
if(num1 == result){
return true;
}else{
return false;
} }
private static boolean minus(int x,int y) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int num1 = sc.nextInt();
int result = x - y;
if(num1 == result){
return true;
}else{
return false;
} }
private static boolean times (int x,int y) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int num1 = sc.nextInt();
int result = x * y;
if(num1 == result){
return true;
}else{
return false;
} }
private static boolean divide(int x,int y) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
float num1 = sc.nextFloat();
float result =(float)x /(float) y;
if(num1 == result){
return true;
}else{
return false;
} } }

能看到判断对错的方法运用了直接运算符计算结果与函数定义后的运算结果相比较,相等得分,不相等则不得分。

编程中出现的问题:在计算结果为小数的除法时,一开始会出现结果怎么算都不对的情况,他的正确答案也是一个向偶舍入的数值,那肯定是不可取的

解决方法:原因是x和y默认int型,在float除法中要将两者都强制类型转换。【这样他的精度为小数点后7位】

附上最后的一部分结果展示。

小学生四则运算出题程序 无操作界面java版 简单的运用java中一些基本操作的更多相关文章

  1. 结对项目-四则运算出题程序(GUI版)

    目录: 一.致搭档(含项目地址) 二.PSP(planning) 三.结对编程中对接口的设计 四.计算模块接口的设计与实现过程 五.计算模块接口部分的性能改进 六.计算模块部分单元测试展示 七.计算模 ...

  2. 小学生四则运算出题软件-基于java控制台的实现

    .题目描述: 1. 使用 -n 参数控制生成题目的个数,例如 Myapp.exe -n 10 -o Exercise.txt 将生成10个题目. 2. 使用 -r 参数控制题目中数值(自然数.真分数和 ...

  3. 《剑指Offer》-004 -Java版二叉树先序和中序遍历返回原二叉树

    如题 (总结要点) 注意空值 假定数据是没有问题的 前序(根左右) ,中序(左根右), 故每次的第一个节点就是根节点 没用数组的库函数,自己手写了两个方法 用Java代码写二叉树很舒服, 没有啥指针, ...

  4. 二维数组中的查找 - Java版 -简单二分查找 -<<剑指Offer>> -水题

    如题 (总结) -认真读题, 还WA了一次, https://www.nowcoder.com/practice/abc3fe2ce8e146608e868a70efebf62e?tpId=13&am ...

  5. 3.结对编程成果报告(小学生四则运算的出题程序,Java实现)

    程序名称:小学生四则运算的出题程序 先附上代码: package com.makequestion; import java.text.DecimalFormat;import java.util.R ...

  6. 结对随即四则运算(带界面Java版)

    //随机四则运算类 public class 随机四则运算 { public static void main(String[] args) { new 界面();//进入随机四则运算的首界面 } } ...

  7. java程序猿如何练习java版的易筋经?

    故事背景 电视剧<天龙八部>中,阿朱易容后进入少林寺偷走了<易筋经>,她一直想把这本书送给乔峰.耿直的乔峰觉得此书来历不正,不肯接受.几番波折,这本书最后落到聚贤庄庄主游坦之手 ...

  8. Oracle Berkeley DB Java 版

    Oracle Berkeley DB Java 版是一个开源的.可嵌入的事务存储引擎,是完全用 Java 编写的.它充分利用 Java 环境来简化开发和部署.Oracle Berkeley DB Ja ...

  9. 20155227 2016-2017-2 《Java程序设计》实验一 Java开发环境的熟悉(Windws + IDEA)实验报告

    20155227 2016-2017-2 <Java程序设计>实验一 Java开发环境的熟悉(Windws + IDEA)实验报告 实验内容 1.使用JDK编译.运行简单的Java程序: ...

随机推荐

  1. thinkjs——session

    工作中又遇到了session问题,于是整理一下有关thinkjs中的session使用小方法: 需要用户登录的网站基本上都离不开 Session,ThinkJS 里默认支持多种类型的 Session, ...

  2. 自己不懂的SQL语句用法

    left  join:是SQL语言中的查询类型,即连接查询.它的全称为左外连接,是外连接的一种. 连接通常可以在select语句的from子句或where子句中建立,其语法格式为: select  c ...

  3. ASCII表

    ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧 ...

  4. oracle 存储过程访问其他用户的表

    用户user2想在存储过程中查询用户User1的表table1, 在PL/SQL中用user1登陆,执行以下语句即可: grant select on User1.table1 to user2;

  5. iOS UIWebView 添加tap手势 和 添加button 遇到的问题

    今天应产品需求,在UIWebView 上添加一个 单机手势和双击手势,再加一个UIButton,UIButton 绑定一件事情,结果遇到了点击button 的点击事件的时候,单机手势 的响应事件,被响 ...

  6. Objective-C_基本数据类型详解

    今天在工作群里面看到有人在发面试题求帮解答,顺便看了一眼,发现一个很侮辱程序员的面试题,但是自己也答得不是很好,所以特意上网查了一下资料,废话不说,附原题: “常见的Objective-C的数据类型有 ...

  7. python对XML的解析

    原文:http://blog.csdn.net/yueguanghaidao/article/details/7265246 python有三种方法解析XML,SAX,DOM,以及ElementTre ...

  8. Fibonacci(斐波那契)非递归实现。容易看懂

    #include<iostream>using namespace std;int main(){ int n; cout<<"please input a n\n& ...

  9. Bootstrap <基础三十一>插件概览

    在前面布局组件中所讨论到的组件仅仅是个开始.Bootstrap 自带 12 种 jQuery 插件,扩展了功能,可以给站点添加更多的互动.即使不是一名高级的 JavaScript 开发人员,也可以着手 ...

  10. keep the bar green to keep the code clean——Junit详解(一)

    测试用例 单元测试时每个开发人员必需掌握的,是保证开发过程中代码的准确性,无误性,保证代码质量.敏捷开发模式是先根据用户需求写测试用例,考虑基本所有用户所需要的情况,再写实现方法.单元测试有很多种,当 ...