使用JAVA编程语言,独立完成一个3到5个运算符的四则运算练习的软件。
软件基本功能要求如下:
- 程序可接收一个输入参数n,然后随机产生n道加减乘除(分别使用符号+-*÷来表示)练习题,每个数字在 0 和 100 之间,运算符在3个到5个之间。
- 每个练习题至少要包含2种运算符。同时,由于小学生没有分数与负数的概念,你所出的练习题在运算过程中不得出现负数与非整数,比如不能出 3÷5+2=2.6,2-5+10=7等算式。
- 练习题生成好后,将你的学号与生成的n道练习题及其对应的正确答案输出到文件“result.txt”中,不要输出额外信息,文件目录与程序目录一致。
- 当程序接收的参数为4时,以下为一个输出文件示例。
2018010203
13+17-1=29
11*15-5=160
3+10+4-16=1
15÷5+3-2=4
附加功能暂时没有实现
首先一个生成随机数的方法:
判断运算符优先级:
private static int first(char s){
switch (s){
case '+':
return 1;
case '-':
return 1;
case '*':
return 2;
case '÷':
return 2;
default:
return -1;
}
}
生成算式方法比较麻烦:
public static void creat(String Question[],int num){
int number[]=new int[100];
String poperator[]=new String[100];
for (int i=0;i<num;i++){
number[0]=make(1,100);
int count=0;
int m=make(3,5);
System.out.println(m);
for (int j=1;j<=m;j++){
count++;
int n=make(0,3);
switch (n){
case 0:
poperator[j]="+";
number[j+1]=make(2,100);
break;
case 1:
poperator[j]="-";
number[j+1]=make(2,100);
if(number[j]<number[j+1]){
int temp=number[j];
number[j]=number[j+1];
number[j+1]=temp;
}
break;
case 2:
if (poperator[j-1]=="*"||poperator[j-1]=="/"){
poperator[j]="+";
number[j+1]=make(2,100);
}
else {
poperator[j]="*";
number[j+1]=make(2,100);
}
break;
case 3:
if(poperator[j-1]=="*"||poperator[j-1]=="÷"){
poperator[j]="+";
number[j+1]=make(2,10);
}else{
poperator[j]="÷";
number[j+1]=make(2,10);
number[j]=number[j+1]*make(2,10);
}
break;
}
}
String question=""+number[0];
poperator[1]="+";
for(int k=1;k<count;k++){
question+=poperator[k]+number[k+1];
}
int answer=solve(question);
if(answer>=0){
question = question + " = "+answer;
}else{
String temp=makequestion();
question = question + " = "+solve(temp);
}
Question[i]=question;
}
}