软件工程个人作业02

四则运算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 提示重复

仍然存在的问题:未实现括号,检验重复以及输出方式。

原文地址:https://www.cnblogs.com/a1264393659/p/5295405.html