软件工程个人作业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); 
}

}

复制代码

运行截图:

分数有乘除:

分数无乘除:

整数有乘除:

整数无乘除:

用户输入范围和有无负数冲突:

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