四则运算2
设计思想:
1.通过用户输入是否需要分数运算,是否需要乘除法,是否需要加减法负数,以及除法是否有余数。
2.根据用户的选择使用不同的函数。用户可以选择题目道数和数值范围。
3.通过产生随机数决定哪一种运算。
4.是否有余数通过循环,根据用户选择,比如用户需要余数就不做限制,如果不需要余数就在输出前进行计算。
5.是否有负数需要用户输入的数值范围允许,否则程序结束。
6.未实现括号,检验重复以及输出方式。
程序代码:
package arithmetic; import java.util.Random; import javax.swing.*; public class Arithmetic { static void add(int limit1,int limit2,int boolminus/*int boolremainder,int boolmultiply*/) { int number1=new Random().nextInt(limit2-limit1+1)+limit1; int number2=new Random().nextInt(limit2-limit1+1)+limit1; if(boolminus==0) { if(limit1<0||limit2<0) { System.out.println("您输入的范围有误"); } else { System.out.println(number1+"+"+number2+"="); } } else { System.out.println(number1+"+"+number2+"="); } } static void subtract(int limit1,int limit2,int boolminus) { int number1=new Random().nextInt(limit2-limit1+1)+limit1; int number2=new Random().nextInt(limit2-limit1+1)+limit1; if(boolminus==0) { while(true) { if(number1<number2) { number1=new Random().nextInt(limit2-limit1+1)+limit1; number2=new Random().nextInt(limit2-limit1+1)+limit1; } else { break; } } if(limit1<0||limit2<0) { System.out.println("您输入的范围有误"); } else if(limit1>=0||limit2>=0||number1>=number2) { System.out.println(number1+"-"+number2+"="); } } else { System.out.println(number1+"-"+number2+"="); } } static void multiply(int limit1,int limit2/*int boolremainder,*/) { int number1=new Random().nextInt(limit2-limit1+1)+limit1; int number2=new Random().nextInt(limit2-limit1+1)+limit1; System.out.println(number1+"*"+number2+"="); } static void divide(int limit1,int limit2,int boolremainder) { int number1=new Random().nextInt(limit2-limit1+1)+limit1; int number2=new Random().nextInt(limit2-limit1+1)+limit1; if(boolremainder==0) { while(true) { if(number1%number2!=0) { number1=new Random().nextInt(limit2-limit1+1)+limit1; number2=new Random().nextInt(limit2-limit1+1)+limit1; } else { break; } } } else { System.out.println(number1+"/"+number2+"="); } } static void fraction(int limit1,int limit2,int numbers,int boolmultiply) { int i,j,k; if(boolmultiply==0) { for(int o=numbers;o>0;o--) {
int number1=new Random().nextInt(limit2-limit1+1)+limit1;
int number2=new Random().nextInt(limit2-limit1+1)+limit1;
if(number1<number2)
i=number1;
else i=number2;
int number3=new Random().nextInt(limit2-limit1+1)+limit1;
int number4=new Random().nextInt(limit2-limit1+1)+limit1;
if(number3<number4)
j=number3;
else j=number4;
for(;i>=0;i--)
{
if(number1%i==0&&number2%i==0)
{
number1=number1/i;
number2=number2/i;
break;
}
}
for(;j>=0;j--)
{
if(number3%j==0&&number4%j==0)
{
number3=number3/j;
number4=number4/j;
break;
}
}
k=new Random().nextInt(2);
if(k==0)
{
System.out.println(number1+"/"+number2+"+"+number3+"/"+number4+"=");
}
else if(k==1)
{
System.out.println(number1+"/"+number2+"-"+number3+"/"+number4+"=");
}
}
}
else { for(int o=numbers;o>0;o--)
{
int number1=new Random().nextInt(limit2-limit1+1)+limit1;
int number2=new Random().nextInt(limit2-limit1+1)+limit1;
if(number1<number2) i=number1; else i=number2;
int number3=new Random().nextInt(limit2-limit1+1)+limit1;
int number4=new Random().nextInt(limit2-limit1+1)+limit1;
if(number3<number4) j=number3;
else j=number4;
for(;i>=0;i--)
{
if(number1%i==0&&number2%i==0)
{
number1=number1/i; number2=number2/i; break;
}
}
for(;j>=0;j--)
{
if(number3%j==0&&number4%j==0)
{
number3=number3/j; number4=number4/j; break;
}
}
k=new Random().nextInt(4);
if(k==0)
{
System.out.println(number1+"/"+number2+"+"+number3+"/"+number4+"=");
}
else if(k==1)
{
System.out.println(number1+"/"+number2+"-"+number3+"/"+number4+"=");
}
else if(k==2)
{
System.out.println(number1+"/"+number2+"*"+number3+"/"+number4+"=");
}
else
{
System.out.println(number1+"/"+number2+"/"+number3+"/"+number4+"=");
}
}
}
}
public static void main(String[] args)
{
String choice0=JOptionPane.showInputDialog("是否有分数运算(有输入1,无输入0)");
String choice1=JOptionPane.showInputDialog("是否有乘除法(有输入1,无输入0)");
String choice2=JOptionPane.showInputDialog("请输入数值范围下限");
String choice21=JOptionPane.showInputDialog("请输入数值范围上限");
String choice5=JOptionPane.showInputDialog("需要多少道题");
int choice00=Integer.parseInt(choice0);
int choice11=Integer.parseInt(choice1);
int limit1=Integer.parseInt(choice2);
int limit2=Integer.parseInt(choice21);
int i=Integer.parseInt(choice5);
if(choice00==0) { String choice3=JOptionPane.showInputDialog("加法有无负数(有输入1,无输入0)");
int choice33=Integer.parseInt(choice3);
if(choice11==0)
{
for(;i>0;i--)
{
int j=new Random().nextInt(2);
if(j==0) add(limit1,limit2,choice33);
else subtract(limit1,limit2,choice33);
}
}
else if(choice11==1)
{
String choice4=JOptionPane.showInputDialog("除法有无余数(有输入1,无输入0)");
int choice44=Integer.parseInt(choice4);
for(;i>0;i--)
{
int j=new Random().nextInt(4);
if(j==0) add(limit1,limit2,choice33);
else if(j==1) subtract(limit1,limit2,choice33);
else if(j==2) multiply(limit1,limit2);
else if(j==3) divide(limit1,limit2,choice44);
}
}
}
else
{
fraction(limit1,limit2,i,choice11);
}
}
}
运行截图:
分数有乘除:
分数无乘除:
整数有乘除:
整数无乘除:
用户输入范围和有无负数冲突:
项目计划日志:
日期 | 课堂 | 编程 | 读书 | 博客 | 日总结 |
3.14 | 120min | 100min | 220min | ||
3.15 | 30min | 100min | 130min | ||
3.16 | 60min | 60min | |||
3.19 | 40min | 50min | 90min | ||
周总结 | 120min | 130min | 200min | 50min | 500min |
时间记录日志:
日期 | 开始 | 结束 | 静时间 | 活动 | 备注 |
3.14 | 8:00,19:00 | 10:00,21:00 | 220min | 上课,阅读 | |
3.15 | 15:00,19:00 | 15:30,21:00 | 130min | 编程,阅读 | |
3.16 | 15:00 | 16:00 | 60min | 编程 | |
3.19 | 14:00 | 15:30 | 90min | 编程,博客 |
缺陷记录日志:
日期 | 编号 | 类型 | 引入 | 排除 | 修复时间 | 修复 |
3.16 | 1 | 分数产生时没有随机产生 | 10min | 随机数产生在循环内的位置不对 | ||
3.19 | 2 | 提示用户输入选择重复提示 | 5min | 提示重复 |
仍然存在的问题:未实现括号,检验重复以及输出方式。