软件工程个人作业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道题的测试。
不知道怎么实现在所有题目都输出后再进行答题。不知道怎么控制运算符的数量。离老师的规定要求还有很远。