软件工程概论四则运算3
设计思路:
1、题目要求:
在之前自动出题程序的基础之上,添加新的功能:
①能判断用户的输入答案是否正确,正确与否,给出提示,若错误,显示正确答案;
② 能处理四则运算的混合算式。
2、实现思路:
出题思路不变,对原来程序生成的算式文本,进行读取每一个算式并进行计算,若输入的答案与结果相等,即计算正确。
在运行混合运算时先随机产生第一个整数,将其转化为字符串,循环产生num4-1个运算符和参加混合运算的整数,将产生的整数以及运算符存入两个数组中,混合四则运算的计算 遍历所有运算符先计算乘除,再计算加减。
程序源代码:
import java.util.Scanner;
import java.util.Random;
public class sizeyunsuan3
{
public static void main(String args[])
{
int ab,a,b,c,e,f,q,r=0;
int down,up;
double anwser1,anwser2;
Scanner scanner =new Scanner(System.in);
System.out.println("请输入你需要的最大值");//先考虑整数的
e=scanner.nextInt();
System.out.println("请输入你需要的最 小值");
f=scanner.nextInt();
System.out.println("请输出你需要多少道题");
int h0=scanner.nextInt();
System.out.println("请输出你要进行的运算: 1 二数运算 2 四则混合运算");
int as=scanner.nextInt();
if(as==1)
{
int i=0,j=0,k=0,p=0;
for(int h=0;h<h0;h++)
{
b=(int)(Math.random()*4+0);
a=(int)(Math.random()*e+f);
c=(int)(Math.random()*e+f);
if(b==0){
System.out.println(a+"+"+c+"=");
System.out.println("请输入你的算式的答案:");
int w=scanner.nextInt();
if(w==a+c){
System.out.println("你的答案正确!");
i++;
}
else
{
System.out.println("你的答案错误!");
}
}
if(b==1){
System.out.println(a+"-"+c+"=");
System.out.println("请输入你的算式的答案:");
int a1=scanner.nextInt();
if(a1==a-c)
{
System.out.println("你的答案正确!");
j++;
}
else
{
System.out.println("你的答案错误!");
}
}
if(b==2)
{
System.out.println(a+"*"+c+"=");
System.out.println("请输入你的算式的答案:");
int a2=scanner.nextInt();
if(a2==a*c){
System.out.println("你的答案正确!");
k++;
}
else
{
System.out.println("你的答案错误!");
}
}
if(b==3)
{
System.out.println(a+"/"+c+"=");
System.out.println("请输入你的算式的答案:");
int a3=scanner.nextInt();
if(a3==a/c)
{
System.out.println("你的答案正确!");
p++;
}
else
{
System.out.println("你的答案错误!");
}
}
}
int w;
w=j+k+i+p;
System.out.println("你一共对了"+w+"道题");
}
if(as==2){
char Q[]={'+','-','*','/'};
for(int i=0;i<h0;i++)
{
int num1,num2,num3,num4,p,p1;
num4=(int)(Math.random()*9+2); //随机产生混合运算中整数的个数
double[] j=new double[num4];char[]k=new char[num4];
num2=(int)(Math.random()*e+f);//随机产生第一个整数
j[0]=num2;
String str1=String.valueOf(num2); //将随机产生的第一个整数转换成字符串形式
int y=1,l=0;
for(int z=0;z<num4-1;z++) //循环产生num4-1个运算符和参加混合运算的整数
{
num1=(int)(Math.random()*4+0);
num3=(int)(Math.random()*e+f);
j[y]=num3;k[l]=Q[num1]; //将产生的整数以及运算符存入两个数组中
++y;++l;
String str2=String.valueOf(num3);//将num3转换成字符串
str1=str1+Q[num1]+str2; //按混合运算的形式变成字符串
}
System.out.println(str1+"=");
System.out.print("请输入你的答案:");
anwser1=scanner.nextDouble();
for(p=0;p<num4-1;p++) //混合四则运算的计算 遍历所有运算符先计算乘除,再计算加减
{
if(k[p]=='*')
{
j[p+1]=j[p]*j[p+1];
j[p]=0;
k[p]='+';
}
else if(k[p]=='/')
{
j[p+1]=j[p]/j[p+1];
j[p]=0;
k[p]='+';
}
}
for(p1=0;p1<num4-1;p1++)
{
if(k[p1]=='+')
{
j[p1+1]=j[p1]+j[p1+1];
j[p1]=0;
}
else if(k[p1]=='-')
{
j[p1+1]=j[p1]-j[p1+1];
j[p1]=0;
}
}
anwser2=j[num4-1];
if(anwser1==anwser2)
{System.out.println("恭喜!输入正确!");r++;}
else
{System.out.println("Sorry!输入错误!");
System.out.println("正确答案是:"+anwser2);}
}
System.out.println("一共答对了"+r+"道题!");
}
}}
程序截图:
编程总结分析:
在编程过程中, 第一次体验了结对开发编程,其中的好处不言而喻,锻炼了团队沟通能力,团结协作解决问题的能力。但是有时候难免会产生不同的思路,而且在编第二个问题的时候,又去看上学期学的数据结构,重新又学习了相关的知识。