zoukankan      html  css  js  c++  java
  • 软件工程个人作业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 提示重复

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

  • 相关阅读:
    Android应用性能优化
    打造高质量Android应用:Android开发必知的50个诀窍
    毕向东day23--java基础-网络总结
    《编写高质量代码:改善Java程序的151个建议》
    最新java数组的详解
    主线程中一定不能放耗时操作,必须要开子线程,比如下载文件,不然会不让你拿到输入流--报错显示android.os.NetworkOnMainThreadException
    《Head First设计模式(中文版)》
    码表由来:ascll码-Gbk2312-GBK-Unicode-UTF-8
    《Java程序性能优化:让你的Java程序更快、更稳定》
    LeetCode 147. 对链表进行插入排序
  • 原文地址:https://www.cnblogs.com/a1264393659/p/5295405.html
Copyright © 2011-2022 走看看