四则运算程序扩展:将程序改为java语言,并允许用户输入,对输入结果进行验证
题目
每个同学选一个方向,把程序扩展一下:
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和C++的区别与相似之处,也对模块化算法的精简有了一定的提高,程序本身的问题进行了初步的解决,我会再接再厉!
四则运算程序扩展:将程序改为java语言,并允许用户输入,对输入结果进行验证的更多相关文章
- 概述java语言
1.java语言是什么? java是一门面向对象的高级语言,它吸收了c++语言的各种优点,还摒弃了C++里难以理解的多继承和指针等概念,因此Java语言具有功能强大和简单易用两个特征. 2.java语 ...
- Java语言Socket接口用法详解
Socket接口用法详解 在Java中,基于TCP协议实现网络通信的类有两个,在客户端的Socket类和在服务器端的ServerSocket类,ServerSocket类的功能是建立一个Serve ...
- [01] Java语言的基本认识
0.写在前面的话 我们都知道在计算机的底层,它是识别二进制的,也就是说,计算机只能认识0和1.这主要是因为电路的逻辑只有两种状态,所以只需要0和1两个数字就可以表示低电平和高电平.而计算机是由数不清的 ...
- Java语言实现机制
Java语言实现机制 1.Java虚拟机(Java Virtual Machine) Java虚拟机(JVM)是在一台计算机上由软件模拟也可以用硬件来实现的假想的计算机.它定义了指令集(相当于中央处理 ...
- day01<计算机基础知识&Java语言基础>
计算机基础知识(计算机概述) 计算机基础知识(软件开发和计算机语言概述) 计算机基础知识(人机交互) 计算机基础知识(键盘功能键和快捷键) 计算机基础知识(如何打开DOS控制台) 计算机基础知识(常见 ...
- Java语言的介绍
1. 计算机语言 语言:沟通交流的方式 计算机语言:人与计算机之间的交流方式 java是一门计算机编程语言,也是意大利自行车品牌 软件工程师,java开发工程师 <--------------- ...
- java语言编写矩阵的四则运算
题目要求如下: 设计程序实现矩阵的四则运算 设计要求: (1) 实现矩阵的四则运算. (2) 考虑实现带变元的矩阵计算. (3)考虑实现矩阵的特征值和特征向量的计算. 我使用java语言写的 目录结构 ...
- 第二次作业利用java语言编写计算器进行四则运算
随着第一次作业的完成,助教 牛老师又布置了第二次作业:用java语言编写一个程序然后进行四则运算用户用键盘输入一个字符来结束程序显示统计结果.一开始看到这个题目我也着实吓了一跳 因为不知道如何下手而且 ...
- 用java语言将数据库中的数据表转换为xml文件的通用程序(细化)
转自:https://www.cnblogs.com/wudage/p/7650685.html 总是在网络上copy别人的源代码,今天我也贴出自己今天写的源码,相信这个程序会对大家在平时的工作中需要 ...
随机推荐
- poj2503 哈希
这题目主要是难在字符串处理这块. #include <stdio.h> #include <string.h> #include <stdlib.h> #defin ...
- 码农谷 球从M米高度自由下落第N次落地时反弹的高度
题目描述 一球从M米高度自由下落,每次落地后返回原高度的一半,再落下.它在第N次落地时反弹多高?共经过多少米? 保留两位小数. 输入描述 M N 输出描述 它在第N次落地时反弹多高?共经过多少米? 保 ...
- ios中,长按Webview中的图片
我们所要解决的问题如题目所示:ios中,长按Webview中的图片,将图片保存到本地相册. 解决方案:对load的html网页,执行js注入,通过在webview中执行js代码,来响应点击事件,通过j ...
- IOS CLLocationManager定位反编码位置信息
//获取位置和坐标#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_7_1 if (IOS_VERSION >= 8.0) { ...
- SQL Server :DBLINK创建及使用
Exec sp_droplinkedsrvlogin bvtwfld12,Null --若存在先刪除Exec sp_dropserver bvtwfld12EXEC sp_addlinkedserve ...
- 新建一个DataTable如何手动给其添加多条数据!
早晨起来,想起昨天利用winform做类似于sqlserver数据库导入数据功能的时候,用到了新建一个DataTable手动给其添加多条数据,平时用不到,需要的时候想不起来了,这次不妨把他记下来.以下 ...
- 强大的网络通信框架(实现缓存)--第三方开源--volley
Android Volley是Android平台上很好用的第三方开源网络通信框架.使用简答,功能强大. Android Volley的库jar包Volley.ja下载连接地址:Volley下载 下载后 ...
- 自适应游标共享技术01(Adaptive Cursor Sharing)
什么是ACS(adaptiver cursor sharing) Oracle通过绑定变量技术解决了SQL语句硬解析过多的问题,降低了资源的争用.但是绑定变量在引入cursor sharing,增加了 ...
- 使用@media做自适应
@media (min-width: 768px){ //>=768的设备 } @media (max-width: 1199){ //<=1199的设备 }
- 使用supervisor的一些注意事项
一直都有在使用supervisor来管理linux上的服务进程.最近有同事说有某服务貌似有问题,让上去检查一下.上去以后发现某服务反应的确很慢,所以就用supervisor重启一下.但是重启的时候就发 ...