四则运算
作者:@kuaiquxie
作者的github:https://github.com/bitebita
本文为作者原创,如需转载,请注明出处:https://www.cnblogs.com/dzwj/p/15310374.html
题目:
一家软件公司程序员二柱的小孩上了小学二年级,老师让家长每天出30道四则运算题目给小学生做。
二柱一下打印出好多份不同的题目,让孩子做了。老师看了作业之后,对二柱赞许有加。别的老师闻讯, 问二柱能否扩大他的影响力,编个软件,给二年级到四年级都用,多了一些小小的要求:
1、题目避免重复(第二阶段)
2、可定制(数量/打印方式):输入大的数量值,测试一下系统是否崩溃,反向查找系统是否优化的余地
3、定制操作数的个数
4、定制是否有乘除法
5、定制是否有括号(随机加入)
6 、定制数值范围(确定操作数的取值范围)
解析:
建立了s包,在包中建立了number类,创建了主函数main();,以及四个函数o1();o2();o3();o4();
package s;
import java.util.Random;
import java.util.Scanner;
import java.util.*;
public class number {
public static void main(String[] args)
{
System.out.println("请选择功能:");
Scanner sc = new Scanner(System.in);
int z = sc.nextInt();
for(int o=1;o<=z;o++) {
switch(z) {
case 1:
o1();
break;
case 2:
o2();
break;
case 3:
o3();
break;
case 4:
o4();
break;
case 5:
break;
default:
break;
}
}
}
public static void o1() //第一阶段
{
Random random = new Random();
Scanner sc = new Scanner(System.in);
System.out.println("请输入打印的题数:");
int m = sc.nextInt();
for(int o = 1; o <= m; o++) {
int a = random.nextInt(4);
int b = random.nextInt(100);
int c = random.nextInt(100);
switch(a)
{
case 0:
System.out.println(b+ "+" +c +"=" );
break;
case 1:
System.out.println(b+ "-" +c +"=" );
break;
case 2:
System.out.println(b+ "*" +c +"=" );
break;
case 3:
System.out.println(b+ "/" +c +"=" );
break;
default:
break;
}
}
}
public static void o2()//第二阶段
{
Random random = new Random();
int a = random.nextInt(4);
int b = random.nextInt(100);
int c = random.nextInt(100);
Scanner sc = new Scanner(System.in);
System.out.println("请输入打印的题数:");
int m = sc.nextInt();
StringBuffer str = new StringBuffer();
if(a == 0) {
System.out.println(b + "+" + c + "=");
}
if(a == 1) {
System.out.println(b + "-" + c + "=");
}
if(a == 2) {
System.out.println(b + "*" + c + "=");
}
if(a == 3) {
System.out.println(b + "/" + c + "=");
}
str.append(a).append(b).append(c);
String[] s = new String[m];
s[0] = str.toString();
for(int o = 0; o < m; o++) {
a = random.nextInt(4);
b = random.nextInt(100);
c = random.nextInt(100);
StringBuffer str2 = new StringBuffer();
s[o] = str2.append(a).append(b).append(c).toString();
int sum = 0;
for(int q = 0; q < s.length; q++) {
if(s[o].equals(s[q])) {
sum++;
}
}
if(sum == 1)
{
if(a == 0) {
System.out.println(b + "+" + c + "=");
}
if(a == 1) {
System.out.println(b + "-" + c + "=");
}
if(a == 2) {
System.out.println(b + "*" + c + "=");
}
if(a == 3) {
System.out.println(b + "/" + c + "=");
}
}else if(sum != 1){
o--;
continue;
}
}
}
public static void o3()//第三阶段
{
int a, b ,c,d;
String g1,g2;
Scanner sc = new Scanner(System.in);
System.out.println("请输入打印的题数:");
int m = sc.nextInt();
System.out.println("有无乘除法,yes表示四则运算,no表示乘除法计算,请输入yes或no:");
g1 = sc.next();
//System.out.println("是否有括号:");
// System.out.println("数值范围:");
StringBuffer str = new StringBuffer();//动态数组
Random random = new Random();
a = random.nextInt(4);
b = random.nextInt(100);
c = random.nextInt(100);
str.append(a).append(b).append(c);//添加数据
String[] s = new String[m];
s[0] = str.toString();//返回对象值
for(int o = 0; o < m; o++) {
a = random.nextInt(4);
b = random.nextInt(100);
c = random.nextInt(100);
StringBuffer str2 = new StringBuffer();
s[o] = str2.append(a).append(b).append(c).toString();
int sum = 0;
for(int q = 0; q < s.length; q++) {
if(s[o].equals(s[q])) {
sum++;
}
}
if(g1.equals("no")) {
if(sum == 1)
{
if(a == 0) {
System.out.println(b + "+" + c + "=");
}
if(a == 1) {
System.out.println(b + "-" + c + "=");
}
if(a == 2) {
o--;
continue;
}
if(a == 3) {
o--;
continue;
}else if(sum != 1){
o--;
continue;
}
}
if(g1.equals("yes")) {
if(sum == 1)
{
if(a == 0) {
System.out.println(b + "+" + c + "=");
}
if(a == 1) {
System.out.println(b + "-" + c + "=");
}
if(a == 2) {
System.out.println(b + "*" + c + "=");
}
if(a == 3) {
System.out.println(b + "/" + c + "=");
}
}else if(sum != 1){
o--;
continue;
}
}
}
}
}
public static void o4()//第三阶段
{
Scanner sc = new Scanner(System.in);
System.out.println("请输入打印的题数:");
int m = sc.nextInt();
System.out.println("有无乘除法,yes表示四则运算,no表示乘除法计算,请输入yes或no:");
String g1 = sc.next();
System.out.println("是否有括号,请输入yes或no:");
String g2 = sc.next();
System.out.println("请输入操作个数:");
int m1 = sc.nextInt();
System.out.println("请输入操作数范围最大值:");
int m2 = sc.nextInt();
Random random = new Random();
int a = random.nextInt(4);
int b = random.nextInt(m2);
int c = random.nextInt(m2);
int d = random.nextInt(m2);
int e = random.nextInt(2);//有无括号
int h = random.nextInt(2);//括号的前后位置
int a1 = random.nextInt(4);
StringBuffer str = new StringBuffer();//动态数组
str.append(a).append(b).append(c);//添加数据
String[] s = new String[m];
s[0] = str.toString();//返回对象值
for( int i = 0; i < m; i++) {
a = random.nextInt(4);
b = random.nextInt(m2);
c = random.nextInt(m2);
d = random.nextInt(m2);
StringBuffer str2 = new StringBuffer();
s[i] = str2.append(a).append(b).append(c).toString();
int sum = 0;
for(int q = 0; q < s.length; q++) {
if(s[i].equals(s[q])) {
sum++;
}
}
}
String g3 = "+";String g4 = "-";
if(m1==2) {
if(a==0) { g3=new String("+");}
else if(a==1) { g3=new String("-");}
else if(a==2) { g3=new String("*");}
else if(a==3) { g3=new String("/");}
}
else if(m1==3) {
if(a==0) {
if(a1==0) { g3=new String("+"); g4=new String("+");}
if(a1==1) { g3=new String("+"); g4=new String("-");}
if(a1==2) { g3=new String("+"); g4=new String("*");}
if(a1==3) { g3=new String("+"); g4=new String("/");}
}
if(a==1) {
if(a1==0) { g3=new String("-"); g4=new String("+");}
if(a1==1) { g3=new String("-"); g4=new String("-");}
if(a1==2) { g3=new String("-"); g4=new String("*");}
if(a1==3) { g3=new String("-"); g4=new String("/");}
}
if(a==2) {
if(a1==0) { g3=new String("*"); g4=new String("+");}
if(a1==1) { g3=new String("*"); g4=new String("-");}
if(a1==2) { g3=new String("*"); g4=new String("*");}
if(a1==3) { g3=new String("*"); g4=new String("/");}
}
if(a==3) {
if(a1==0) { g3=new String("/"); g4=new String("+");}
if(a1==1) { g3=new String("/"); g4=new String("-");}
if(a1==2) { g3=new String("/"); g4=new String("*");}
if(a1==3) { g3=new String("/"); g4=new String("/");}
}
}
switch(a) {
case 0:
if(a==0) {
if(e==0) {System.out.println(b+g3+c+"=");}
else {System.out.println("("+b+g3+c+")"+"=");}
}
else if(a==3) {
if(e==0) {System.out.println(b+g3+c+g3+d+"=");}
else if(h==0) {System.out.println("("+b+g3+c+")"+g4+d+"=");}
else {System.out.println("("+b+g3+c+")"+g4+d+"=");}
}
break;
case 1:
if(a==1) {
if(e==0) {System.out.println(b+g3+c+"=");}
else {System.out.println("("+b+g3+c+")"+"=");}
}
else if(a==3) {
if(e==0) {System.out.println(b+g3+c+g3+d+"=");}
else if(h==0) {System.out.println("("+b+g3+c+")"+g4+d+"=");}
else {System.out.println("("+b+g3+c+")"+g4+d+"=");}
}
break;
case 2:
if(a==2) {
if(e==0) {System.out.println(b+g3+c+"=");}
else {System.out.println("("+b+g3+c+")"+"=");}
}
else if(a==3) {
if(e==0) {System.out.println(b+g3+c+g3+d+"=");}
else if(h==0) {System.out.println("("+b+g3+c+")"+g4+d+"=");}
else {System.out.println("("+b+g3+c+")"+g4+d+"=");}
}
break;
case 3:
if(a==3) {
if(e==0) {System.out.println(b+g3+c+"=");}
else {System.out.println("("+b+g3+c+")"+"=");}
}
else if(a==3) {
if(e==0) {System.out.println(b+g3+c+g3+d+"=");}
else if(h==0) {System.out.println("("+b+g3+c+")"+g4+d+"=");}
else {System.out.println("("+b+g3+c+")"+g4+d+"=");}
}
break;
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」