四则运算(可怜的二柱子)2
可憐的二柱子同學(xué),老師又對他的自動出題系統(tǒng)提出了新的要求:
1、題目避免重復(fù);2、可定制(數(shù)量/打印方式);3、可以控制下列參數(shù):
是否有乘除法;
是否有括號(最多可以支持十個數(shù)參與計算);
數(shù)值范圍;
加減有無負(fù)數(shù);
除法有無余數(shù)!
解題思路:
1、定義?SIZE?打印題數(shù)
2、定義一個生成數(shù)的函數(shù)(整數(shù)分?jǐn)?shù)隨機)參數(shù)為(最大值,最小值,有無負(fù)數(shù))
3、定義一個生成符號的函數(shù)(加減乘除隨機)參數(shù)為(是否有乘除法)
4、定義string二維數(shù)組
5、進入for循環(huán)來依次生成題目for(int?i=0;i<SIZE;i++)
??5、1輸入相關(guān)變量(有無負(fù)數(shù)、有無余數(shù)、有無乘除法、數(shù)值范圍)
??5、2生成符號
??5、3生成第二個數(shù)
??5、4生成第一個數(shù)(若符號為除法,第一個數(shù)直接等于第二個數(shù)的倍數(shù))
??5、5將本題賦值給test[i][0]
??5、6利用for循環(huán)判斷重復(fù),若重復(fù)則執(zhí)行i--。
6、輸出題目
源代碼:
package operation; /** 開始時間11:18* */ import java.util.Scanner; public class Operation {public static int SIZE=30;/** 生成數(shù)字的函數(shù)* max和min表示最大值和最小值范圍* judge表示有無負(fù)數(shù)Y-可以有,N不能有。*/public static String Generatingnumber(int max,int min,String judge){//是否為分?jǐn)?shù)0-分?jǐn)?shù),1-整數(shù)int m=(int)(Math.random()*2);String result="";if(m==1){int num =1 ;int zhengfu=0;while(zhengfu==0){num=(int)(Math.random()*(max+min)-min);while(num==0){num=(int)(Math.random()*(max+min)-min);}if(judge.equals("N")&&num>0) zhengfu=1;if(judge.equals("Y")) zhengfu=1;}result=result+num;}if(m==0){int numup1,numdown1;//若為分?jǐn)?shù)則分別生成分子和分母(分母不為零且分子小于分母)int insize=1;//while(insize==1){numup1=(int)(Math.random()*100);numdown1=(int)(Math.random()*100);while(numdown1==0||numup1>numdown1){numdown1=(int)(Math.random()*100);}//分?jǐn)?shù)化為最簡int linshi=2;while(numup1>=linshi){if(numup1%linshi==0&&numdown1%linshi==0){numup1=numup1/linshi;numdown1=numdown1/linshi;}else linshi++; }result=result+"("+numup1+"/"+numdown1+")";}return result;}/** 生成符號的函數(shù)* judge2表示有無乘除Y-可以有,N不能有。*/public static String Generatingsymbol(String judge2){String result=new String();int fuhao;if(judge2.equals("Y")){fuhao=(int)(Math.random()*4);if(fuhao==0) result="+";if(fuhao==1) result="-";if(fuhao==2) result="*";if(fuhao==3) result="/";}if(judge2.equals("N")){fuhao=(int)(Math.random()*2);if(fuhao==0) result="+";if(fuhao==1) result="-";}return result;}public static void main(String args[]){String test[][]=new String[SIZE][1];for(int i=0;i<SIZE;i++){test[i][0]="";}int max,min;String judge,judge1,judge2;Scanner sca=new Scanner(System.in);System.out.println("請輸入運算所涉及數(shù)的最小值");min=sca.nextInt();System.out.println("請輸入運算所涉及數(shù)的最大值");max=sca.nextInt();System.out.println("請輸入是否有乘除法Y-可以有,N-不能有");judge2=sca.next();System.out.println("請輸入運算可否涉及負(fù)數(shù)Y-可以有,N-不能有");judge=sca.next();System.out.println("請輸入除法可否有余數(shù)Y-可以有,N-不能有");judge1=sca.next();for(int i=0;i<SIZE;i++){String fuhao=Generatingsymbol(judge2);String num2=Generatingnumber(max,min,judge);String num1=new String();if(fuhao.equals("/")&&judge1.equals("N")){num2=""+(int)Math.random()*100;int intnum2=Integer.parseInt(num2);num1= ""+((int)(Math.random()*100)*intnum2);} else num1=Generatingnumber( max, min, judge);test[i][0]=num1+fuhao+num2;//去重語句if(i>=1){for(int j=0;j<i;j++){if(test[i][0].equals(test[j][0])) {i--;break;}}}}//輸出for(int p=0;p<SIZE;p++){System.out.println(test[p][0]);}}}結(jié)果截圖:
?
轉(zhuǎn)載于:https://www.cnblogs.com/hehejeson/articles/5295419.html
總結(jié)
以上是生活随笔為你收集整理的四则运算(可怜的二柱子)2的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。