Java四则运算V3.0
第三版基本完成了
题目:
课堂测试3: 2、可定制(数量/打印方式):输入大的数量值,测试一下系统是否崩溃,反向查找系统是否优化的余地; 3、定制操作数的个数:4、定制是否有乘除法 5、定制是否有括号(随机加入) 6 、定制数值范围(确定操作数的取值范围)
package demo; import java.util.Scanner; public class chuti { static String[] question = new String[100]; static int[] answer = new int[100]; public static int getRandom(int n, int m) { // 产生n->m的随机数 return (int) (Math.random() * (m - n) + n); } public static char getCharRandom() { // 随机产生四种运算符 char sign = 0; int Sn; Sn = getRandom(1, 5); switch (Sn) { case 1: sign = '+'; break; case 2: sign = '-'; break; case 3: sign = '×'; break; case 4: sign = '÷'; break; } return sign; } public static void main(String[] args) { // TODO Auto-generated method stub Scanner cin = new Scanner(System.in); //File file = new File("E:\\szys.txt"); int i = 0; int huida,score = 0; do { int x = (int) (Math.random() * (100 - 1 )+ 1); //产生1-100的随机数 int y = (int) (Math.random() * (100 - 1 )+ 1); //产生1-100的随机数 char sign = getCharRandom(); /* * 判断乘法的范围*/ switch(sign) { case '+': question[i] = x +""+ sign +""+ y + "="; huida = x + y; answer[i] = huida; //System.out.println( "("+ (i+1) +")"+ x + " " + sign + " " + y + "=" ); i++;break; case '-': if(x < y) //判断减数与被减数的大小关系 { int temp; temp = x; x = y; y = temp; } question[i] = x +""+ sign +""+ y + "="; huida = x - y; answer[i] = huida; //System.out.println( "("+ (i+1) +")"+ x + " " + sign + " " + y + "=" ); i++;break; case '×': { x = (int) (Math.random() * (10 - 1 )+ 1);//新生成x,y<9的随机数 y = (int) (Math.random() * (10 - 1 )+ 1); question[i] = x +""+ sign +""+ y + "="; huida = x * y; answer[i] = huida; //System.out.println( "("+ (i+1) +")"+ x + " " + sign + " " + y + "=" ); i++; };break; case '÷': do //循环生成除法 { y = (int) (Math.random() * (10 - 1 )+ 1); x = (int) (Math.random() * (9*y - 1 )+ 1); } while(x % y != 0) ; question[i] = x +""+ sign+"" + y + "="; huida = x / y; answer[i] = huida; //System.out.println( "("+ (i+1) +")"+ x + " " + sign + " " + y + "=" ); i++;break; } } while(i<10); try { BufferedWriter br= new BufferedWriter(new FileWriter("szys.txt")); for(int k = 0;k<10;k++) { br.write("("+(k+1)+")"+String.valueOf(question[k])+"*"+String.valueOf(answer[k]));//读取数组进缓冲区 br.newLine();//写入新的一行,换行 br.flush();//将缓冲区存入txt } } catch (IOException e) { //文件读写异常 e.printStackTrace(); } try { String line = null; BufferedReader re = new BufferedReader(new FileReader("szys.txt"));//新定义 while((line = re.readLine())!= null) {//逐行读取文件 String [] txt = line.split("\\*");//以*为分界,将.txt分开成问题和答案两块 System.out.println(txt[0]);//输出题目 System.out.print("Your answer:"); String an = cin.next(); if(txt[1].equals(an))//判断答案与回答 { System.out.println("回答正确!"); score++; } else System.out.println("回答错误!正确答案:" + txt[1]); } System.out.println("共答对"+ score + "题,答错" + (10-score) + "题"); }catch(IOException e) { e.printStackTrace(); } } }