软件工程个人作业03

对上周程序进行了修改。

package p2;
import java.util.Scanner;
import java.text.DecimalFormat;  
public class Size {
    public static void main(String[] args) {
        System.out.println("请输入需要的题目数量(最大数目为1000):");
        Scanner number=new Scanner(System.in);
        int n=number.nextInt();
        System.out.println("运算结果保留两位小数 !");
        yunsuan(n);
    }
    //生成随机数
    public static int random(int m,int n){     //n为随机数个数
        int value=m+(int)(Math.random()*n);//随机数最小为1
        return value;
    }
    //选择题目要求
    public void xuanze(){
        System.out.println("请选择 :");
        Scanner xuanze=new Scanner(System.in);
        int xz=xuanze.nextInt();
    }
    //约分
    public static int yf(int a, int b) {
        int gcd = 1;
        if(b >= a) {
            int temp = a;
            a = b;
            b = temp;
        }
        for(int i = b;i>=1;i--) {
            if(a % i == 0 && b % i == 0) {
                gcd = i;
                break;
            }
        }
        return gcd;
    }
    //运算
    public  static void yunsuan(int m){
        System.out.println("请输入运算数字取值范围:");
        Scanner Nu=new Scanner(System.in);
        int M=Nu.nextInt();
        Scanner Num=new Scanner(System.in);
        int N=Num.nextInt();
        double value1,value2,value3,value4,y;
        String result1="",result2="";
        double result = 0;
        int a,b,c,d;
        String ysf=null;
        for(int i=0;i<m;i++)
        {
            //取随机数
            a=random(M,N);
            b=random(M,N);
            c=random(M,N);
            d=random(M,N);
            value1=(double)a;value2=(double)b;value3=(double)c;value4=(double)d;
             
            y=random(1,4);     //运算符            
            //真分数运算
            if((value1%value2!=0&&value1<value2&&value3<value4)||(value1<value2&&value3<value4&&value3%value4!=0))  
            {
                if(y==1) {ysf="+";result = (value1*value4+value2*value3)/(value2*value4);}
                else if(y==2) {ysf="-";result = (value1*value4-value2*value3)/(value2*value4);}
                else if(y==3) {ysf="*";result = (value1*value3)/(value2*value4);}
                else if(y==4) {ysf="÷";result = (value1*value4)/(value2*value3);}    
                DecimalFormat  dq   = new DecimalFormat("######0"); 
                result2=dq.format(value1)+"/"+dq.format(value2)+" "+ysf+" "+dq.format(value3)+"/"+dq.format(value4)+" =";                 
                System.out.print(result2);    
                Scanner number1=new Scanner(System.in);
                String n1=number1.nextLine();               
                DecimalFormat    df   = new DecimalFormat("######0.00");   //保留两位小数
                String resultn=df.format(result); 
                if(!n1.equals(resultn))System.out.println("X!正确答案为:"+resultn);
            }                             
            else
            {            
                if(y==2&&value1<value2)
                {    
                    if(y==1) {ysf="+";result=value1+value2;}
                    else if(y==2) {ysf="-";result=value1-value2;}
                    else if(y==3) {ysf="*";result=value1*value2;}
                    else if(y==4) {ysf="÷";result=value1/value2;} 
                    DecimalFormat dq = new DecimalFormat("######0");   
                  //    dq.format(value1); dq.format(value2); dq.format(value3); dq.format(value4); 
                   result1=dq.format(value1)+" "+ysf+" "+dq.format(value2)+" =";
                   System.out.print(result1);
                      Scanner number1=new Scanner(System.in);
                   double n1=number1.nextDouble();
                   if(!(n1==result))System.out.println("X!正确答案为:"+result);
                }
                else m++;
            }
                
        }    
        System.out.println("答题结束。");
    }
}
 

这个程序需要答一道题再出下一道题,所以不能实现10000道题的测试。

不知道怎么实现在所有题目都输出后再进行答题。不知道怎么控制运算符的数量。离老师的规定要求还有很远。

posted @ 2017-03-20 18:38  暖心系  阅读(133)  评论(0编辑  收藏  举报