1. 程式人生 > >軟件工程個人作業02

軟件工程個人作業02

owin -- args || 產生 image break cnblogs ply

四則運算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);
}
}
}

技術分享

運行截圖:

分數有乘除:技術分享

分數無乘除:技術分享

整數有乘除:技術分享

整數無乘除:技術分享

用戶輸入範圍和有無負數沖突:技術分享

軟件工程個人作業02