四则运算程序扩展:将程序改为java语言,并允许用户输入,对输入结果进行验证

时间:2021-10-31 13:23:57

题目

每个同学选一个方向,把程序扩展一下:
1、让程序能接受用户输入答案,并判定对错。最后给出总共对/错 的数量。
2、把程序变成一个网页程序,用户通过设定参数,就可以得到各种题目。
3、把程序变成一个Windows 图形界面的程序。
4、把程序变成一个智能手机程序 (你正在用什么手机, 就写那个手机的程序)。(可以延期3周后)
5、选一个你从来没有学过的编程语言,试一试实现基本功能。

设计思想

本次程序采用数组记录答案,包含输入数组和正确结果保存数组,进行比较

源代码

package minirisoft;

import java.util.Random;
import java.util.Scanner; public class SizeYunsuan {
public static Random rand=new Random();
public static class Qst
{
static int Operand(int Range)//产生操作数
{
int Opd=rand.nextInt(Range*2+1)-Range;
return Opd;
}
public static char OperatorKind(char Operator,boolean IfSuppMD)//生成运算符
{
int OperatorPossible=rand.nextInt(4);
if(!IfSuppMD)
{
OperatorPossible/=2;
}
switch(OperatorPossible)
{
case 0:
Operator='+';
break;
case 1:
Operator='-';
break;
case 2:
Operator='*';
break;
case 3:
Operator='/';
break;
default:
System.out.print("Error!");
}
return Operator;
}
public static boolean IfRepeated(String str[],int Location)//判断是否重复
{
for(int i=0;i<Location;i++)
{
if(str[i].equals(str[Location]))
return true;
}
return false;
}
public static int Ans(int ans,int Operand1,int Operand2,char Operator)//生成答案
{
switch(Operator)
{
case '+':
ans=Operand1+Operand2;
break;
case '-':
ans=Operand1-Operand2;
break;
case '*':
ans=Operand1*Operand2;
break;
case '/':
ans=Operand1/Operand2;
break;
default:
System.out.print("Error!");
}
return ans;
}
//生成一道运算题
public static void CreateStr(int Range,char Operator,String str[],int i,int QstNum,int ans[],boolean IfSuppMD)
{ int answer = 0;
Qst.OperatorKind(Operator,IfSuppMD);
int Operand1=Qst.Operand(Range);
int Operand2=Qst.Operand(Range);
str[i]=Integer.toString(Operand1);
str[i]+=Operator;
str[i]+=Integer.toString(Operand2);
str[i]+="=";
while(IfRepeated(str,i))//判断是否重复
{
Operand1=Qst.Operand(Range);
Operand2=Qst.Operand(Range);
str[i]=Integer.toString(Operand1);
str[i]+=Operator;
str[i]+=Integer.toString(Operand2);
str[i]+="=";
}
ans[i]=Qst.Ans(answer,Operand1,Operand2,Operator);
}
public static void Display(String str[],int Col)//输出生成的运算题
{ for(int j=0;j<str.length;j++)
{
System.out.print(str[j]);
if(j%Col==Col-1)
{
System.out.println();
}
else
{
System.out.print('\t');
}
}
}
public static void Input(int Input[],int QstNum)//输入问题答案
{
Scanner sca=new Scanner(System.in);
for(int j=0;j<QstNum;j++)
{
Input[j]=sca.nextInt();
}
}
public static void OutAns(int ans[],int QstNum,int Col)//输出答案
{
for(int j=0;j<QstNum;j++)
{
System.out.print(ans[j]);
if(j%Col==Col-1)
{
System.out.println();
}
else
{
System.out.print('\t');
}
}
}
public static void ConfirmAns(int ans[],int Input[],int QstNum,int count)
{
count=0;
for(int i=0;i<QstNum;i++)
{
if(ans[i]==Input[i])
count++;
}
System.out.println("答题正确个数:");
System.out.print(count);
} } public static void main(String args[])
{
int Range,QstNum=0,Col=0,count=0;
boolean IfSuppMD=true;
char Operator = '+';
Scanner sca=new Scanner(System.in);
System.out.println("请输入生成题目的数量:");
QstNum=sca.nextInt();
System.out.println("请输入算数范围:");
Range=sca.nextInt();
System.out.println("请输入划分列数:");
Col=sca.nextInt();
System.out.println("是否支持乘除法:(true/false)");
IfSuppMD=sca.nextBoolean();
String str[] = new String[QstNum];
int ans[]=new int[QstNum];
int Input[]=new int[QstNum];
for( int i=0;i<QstNum;i++)
{
try
{
Qst.CreateStr(Range,Qst.OperatorKind(Operator,IfSuppMD),str,i,QstNum,ans,IfSuppMD);
}
catch(Exception e)
{
i--;
};
}
Qst.Display(str,Col);
Qst.Input(Input, QstNum);
System.out.println("输入答案:");
System.out.println();
Qst.OutAns(Input,QstNum,Col);
System.out.println("正确答案:");
System.out.println();
Qst.OutAns(ans,QstNum,Col);
Qst.ConfirmAns(ans,Input,QstNum,count);
} }

  程序截图

四则运算程序扩展:将程序改为java语言,并允许用户输入,对输入结果进行验证

实验总结

本次实验对前面解决该问题的思路进行了梳理,不再意气用事,采用java语言重新做了一遍,体验到了java和C++的区别与相似之处,也对模块化算法的精简有了一定的提高,程序本身的问题进行了初步的解决,我会再接再厉!

四则运算程序扩展:将程序改为java语言,并允许用户输入,对输入结果进行验证的更多相关文章

  1. 概述java语言

    1.java语言是什么? java是一门面向对象的高级语言,它吸收了c++语言的各种优点,还摒弃了C++里难以理解的多继承和指针等概念,因此Java语言具有功能强大和简单易用两个特征. 2.java语 ...

  2. Java语言Socket接口用法详解

    Socket接口用法详解   在Java中,基于TCP协议实现网络通信的类有两个,在客户端的Socket类和在服务器端的ServerSocket类,ServerSocket类的功能是建立一个Serve ...

  3. &lbrack;01&rsqb; Java语言的基本认识

    0.写在前面的话 我们都知道在计算机的底层,它是识别二进制的,也就是说,计算机只能认识0和1.这主要是因为电路的逻辑只有两种状态,所以只需要0和1两个数字就可以表示低电平和高电平.而计算机是由数不清的 ...

  4. Java语言实现机制

    Java语言实现机制 1.Java虚拟机(Java Virtual Machine) Java虚拟机(JVM)是在一台计算机上由软件模拟也可以用硬件来实现的假想的计算机.它定义了指令集(相当于*处理 ...

  5. day01&lt&semi;计算机基础知识&amp&semi;Java语言基础&gt&semi;

    计算机基础知识(计算机概述) 计算机基础知识(软件开发和计算机语言概述) 计算机基础知识(人机交互) 计算机基础知识(键盘功能键和快捷键) 计算机基础知识(如何打开DOS控制台) 计算机基础知识(常见 ...

  6. Java语言的介绍

    1. 计算机语言 语言:沟通交流的方式 计算机语言:人与计算机之间的交流方式 java是一门计算机编程语言,也是意大利自行车品牌 软件工程师,java开发工程师 <--------------- ...

  7. java语言编写矩阵的四则运算

    题目要求如下: 设计程序实现矩阵的四则运算 设计要求: (1) 实现矩阵的四则运算. (2) 考虑实现带变元的矩阵计算. (3)考虑实现矩阵的特征值和特征向量的计算. 我使用java语言写的 目录结构 ...

  8. 第二次作业利用java语言编写计算器进行四则运算

    随着第一次作业的完成,助教 牛老师又布置了第二次作业:用java语言编写一个程序然后进行四则运算用户用键盘输入一个字符来结束程序显示统计结果.一开始看到这个题目我也着实吓了一跳 因为不知道如何下手而且 ...

  9. 用java语言将数据库中的数据表转换为xml文件的通用程序&lpar;细化&rpar;

    转自:https://www.cnblogs.com/wudage/p/7650685.html 总是在网络上copy别人的源代码,今天我也贴出自己今天写的源码,相信这个程序会对大家在平时的工作中需要 ...

随机推荐

  1. 给dos命令&OpenCurlyDoubleQuote;&period;bat”文件换图标

    最近客户有个需求:给企业建立一个FTP服务器,并且给不同的部门分配不同的目录和管理权限. 这个好实现!直接安装serv-u,进行一番设置,搞定! 不过客户嫌登陆FTP操作麻烦,输入ip,输入账号什么的 ...

  2. &lpar;5&rpar;分布式下的爬虫Scrapy应该如何做-windows下的redis的安装与配置

    软件版本: redis-2.4.6-setup-64-bit.exe — Redis 2.4.6 Windows Setup (64-bit) 系统: win7 64bit 本篇的内容是为了给分布式下 ...

  3. Python全栈开发之MySQL(三)视图,存储过程触发器,函数,事务,索引

    一:视图 1:什么是视图? 视图是指存储在数据库中的查询的SQL语句,具有简单.安全.逻辑数据独立性的作用及视点集中简化操作定制数据安全性的优点.视图包含一系列带有名称的列和行数据.但是,视图并不在数 ...

  4. C&plus;&plus; Virtual介绍 分类: C&sol;C&plus;&plus; 2015-06-16 21&colon;36 26人阅读 评论&lpar;0&rpar; 收藏

    参考链接:http://www.cnblogs.com/xd502djj/archive/2010/09/22/1832912.html 学过C++的人都知道在类Base中加了Virtual关键字的函 ...

  5. CSS 规划

    1)在拿到psd效果图后,我会将所有的效果图看一遍,然后开始打草稿,在纸上画,在PS中标注都可以.一般都是做个大概的统计,太详细不太现实,既费时间也费精力. 2)网站的浏览器兼容性要顾及到哪些,IE6 ...

  6. CSS3圆角详解(border-radius)

    1.CSS3圆角的优点 传统的圆角生成方案,必须使用多张图片作为背景图案.CSS3的出现,使得我们再也不必浪费时间去制作这些图片了,而且还有其他多个优点: 减少维护的工作量.图片文件的生成.更新.编写 ...

  7. centos 安装桌面系统

    yum -y groupinstall "Desktop" "Desktop Platform" "X Window System" &qu ...

  8. 制作根文件系统之内核如何启动init进程

    start_kernel其实也是内核的一个进程,它占用了进程号0,start_kernel的内容简写如下: asmlinkage void __init start_kernel(void) //内核 ...

  9. SVN和IntelliJ IDEA忽略node&lowbar;module设置

    SVN提交忽略node_modules 1.空白处右键>选中TortoiseSVN>设置(settings) 2.常规设置(General)>Subversion>编辑(edi ...

  10. jQuery实现新浪微博自动底部加载的方法

    jQuery ScrollPagination plugin 是一个jQuery 实现的支持无限滚动加载数据的插件. 地址:http://andersonferminiano.com/jquerysc ...