设计思路
1、输入:输入选择;
2、选择内容:选择出2位数的题还是多位数的题还是退出程序
选择1是否有乘除法(运算符0-1或0-3);
选择5加减有无负数;
选择6除法有无余数;
选择7是选择数量或打印方式。
3是数值范围的前域
4是数值范围的后域
3、加工:2位数的题设置循环,令其长度为一个足够大的数,满足程序一次运行可多次使用
是否有乘除法:在前面做出选择后,在下面只需设置运算符随机出数的范围在0-1之间还是0-3之间
数值范围:即四则运算随机出数的范围在前域~后域
加减有无负数:对随机生成的数字进行运算,如果进行加/减运算之后,有负数,则根据选择进行保留或舍弃
控制题目不能重复:将之前的题目存放在数组中,然后依次进行比较
打印方式:根据用户输入要求一行输出几列后,利用取余的方法判断是否要换行输出
计算则按照顺序计算即可
多位数的题:
设置循环,令其长度为一个足够大的数,满足程序一次运行可多次使用
是否有乘除法:在前面做出选择后,在下面只需设置运算符随机出数的范围在0-1之间还是0-3之间
数值范围:即四则运算随机出数的范围在前域~后域
加减有无负数:对随机生成的数字进行运算,如果进行加/减运算之后,有负数,则根据选择进行保留或舍弃
有无括号:用随机数来进行选择在原来式子之前还是之后进行添加
控制题目不能重复:将之前的题目存放在数组中,然后依次进行比较
打印方式:根据用户输入要求一行输出几列后,利用取余的方法判断是否要换行输出
带括号的计算是直接从最里层括号开始往外依次计算
不带括号的计算则分为没有乘除法和有乘除法
没有乘除法的是将运算式存为二维数组,将数值和运算符依次分别存放于两个数组中,然后按从左到右的顺序进行计算
有乘除法的则需进一步统计,在哪有除法或者乘法,然后先进行这两个运算。
4、输出:2位数运算,显示运算式以及用户输入的结果,还有系统判断的结果
最后,则是系统统计用户的做题情况
多位数运算则是显示运算式以及系统产生的结果
1 import java.util.Random; 2 import java.util.Scanner; 3 4 import javax.swing.JOptionPane; 5 6 //4:00 7 public class Arithmetic { 8 9 public static void main(String[] args) { 10 // TODO 自动生成的方法存根 11 int c;//选择 12 int c1,c4,c5,c6,c7,c8; 13 int a,b,d1;//二位数运算 14 int c2,c3; 15 int e=0;//运算符 16 String s=""; 17 double d=0.0;//2位数的结果,用户 18 double f=0.0,g=0.0;//2位数结果,系统,多位数结果,系统 19 int flag=0;//判断是否输出 20 int m=0;//题数 21 Random rand = new Random(); 22 for(int i=0;i<100000000;i++) 23 { 24 System.out.println("请输入选择:1、2位数运算 2、多位数运算 3、退出"); 25 Scanner input=new Scanner(System.in) ; 26 c=input.nextInt(); 27 if(c==1) 28 { 29 System.out.println("请输入选择:1 、有乘除法 2、无乘除法"); 30 Scanner input1=new Scanner(System.in) ; 31 c1=input1.nextInt(); 32 System.out.println("请输入数值范围的前域 "); 33 Scanner input2=new Scanner(System.in) ; 34 c2=input2.nextInt(); 35 System.out.println("请输入数值范围的后域"); 36 Scanner input3=new Scanner(System.in) ; 37 c3=input3.nextInt(); 38 System.out.println("请输入选择:1、加减有负数 2、加减无负数"); 39 Scanner input4=new Scanner(System.in) ; 40 c4=input4.nextInt(); 41 System.out.println("请输入选择:1、除法有余数 2、除法无余数"); 42 Scanner input5=new Scanner(System.in) ; 43 c5=input5.nextInt(); 44 System.out.println("请输入出题数量"); 45 Scanner input6=new Scanner(System.in) ; 46 c6=input6.nextInt(); 47 System.out.println("请输入在一行中输出几列运算式?"); 48 Scanner input7=new Scanner(System.in) ; 49 c7=input7.nextInt(); 50 String []Repeat=new String[2*c6]; 51 for(int w=0;w=0) 77 { 78 flag=0; 79 } 80 else 81 { 82 flag=1; 83 } 84 } 85 if(e==1) 86 { 87 if((a-b)>=0) 88 { 89 flag=0; 90 } 91 else 92 { 93 flag=1; 94 } 95 } 96 } 97 //符号 98 if(e==0) 99 {100 s="+";101 f=a+b;102 }103 if(e==1)104 {105 s="-";106 f=a-b;107 }108 if(e==2)109 {110 s="*";111 f=a*b;112 }113 if(e==3)114 {115 if(b!=0)116 {117 if(c5==1)118 {119 s="/"; 120 f=a/b;121 }122 if(c5==2)123 {124 if(a%b==0)125 {126 s="/";127 f=a/b;128 }129 if(a%b!=0)130 {131 flag=1;132 }133 }134 135 }136 }137 //判断重复138 if(a<0.0&&b>=0.0)139 {140 Repeat[w]="("+a+")"+s+b;141 }142 if(a>=0.0&&b<0.0)143 {144 Repeat[w]=a+s+"("+b+")";145 }146 if(a<0.0&&b<0.0)147 {148 Repeat[w]="("+a+")"+s+"("+b+")";149 }150 if(a>=0.0&&b>=0.0)151 {152 Repeat[w]=a+s+b;153 }154 for(int w2=0;w2