关于输入输出流(四则运算)
Posted yxsz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于输入输出流(四则运算)相关的知识,希望对你有一定的参考价值。
题目要求:
构建100以内加减乘除随机题目100道,并输出至.txt文件内,然后再从文件中输出至屏幕,做一道比对一道题的答案,敲击回车出现下一道题,最后统计正确与错误题数,打印出来。
题目思路:
本题有三个难点,第一,如何构建100道随机数学题;第二,如何能将构建出的题目“安全”地运送至文件中;第三,如何进行输出并比对答案,进行统计?
(1)构建随机100以内数学题原码:
Random rd=new Random(); String fh[]={"+","-","*","/"}; int num1; int num2; int h; static int t,f; public int getT() { return t; } public void setT() { t++; } public int getF() { return f; } public void setF() { f++; } int number; static int answer; public int getAnswer() { return answer; } public void setAnswer(int answer) { this.answer = answer; } public int getNum1() { return num1; } public void setNum1(int num1) { this.num1 =num1; } public int getNum2() { return num2; } public void setNum2(int num2) { this.num2 =num2; } public int getH() { return h; } public void setH(int h) { this.h = h; } public String[] getFh() { return fh; } public void fuzhi() { Random rd=new Random(); num1=1+rd.nextInt(101); num2=1+rd.nextInt(101); h=rd.nextInt(4); setNum1(num1); setNum2(num2); setH(h); if(fh[h].equals("+")) { if(num1+num2<=100) { setAnswer(num1+num2); } else { fuzhi(); } } else if(fh[h].equals("-")) { setAnswer(num1-num2); } else if(fh[h].equals("*")) { if(num1*num2<=0) { setAnswer(num1*num2); } else { fuzhi2(); } } else if(fh[h].equals("/")) { if(getNum1()%getNum2()==0) { setAnswer(num1/num2); } else { fuzhi(); } } } public void fuzhi2() { Random rd=new Random(); num1=1+rd.nextInt(11); num2=1+rd.nextInt(11); setNum1(num1); setNum2(num2); setAnswer(num1*num2); }
(2)将100道题输出至文件原码:
public void Output{ PrintStream ps = null; try { //创建一个节点输出流:FileOutputStream FileOutputStream fos = new FileOutputStream("E:\\f1.txt"); //以PrintStream来包装FileOutputStream输出流 ps = new PrintStream(fos); //使用PrintStream执行输出 for(int i=0;i<5;i++) { d.fuzhi(); ps.println(d.getNum1()+d.getFh()[d.getH()]+d.getNum2()+"="+" "); array.add(d.getAnswer()); } } catch (IOException ioe) { ioe.printStackTrace(ps); }finally { ps.close(); } }
(3)比对并输出正误题数
public void Input{ FileReader fileReader =new FileReader("E:\\f1.txt"); @SuppressWarnings("resource") BufferedReader bufferedReader =new BufferedReader(fileReader); ArrayList<String> list =new ArrayList<String>(); String str=null; while((str=bufferedReader.readLine())!=null) { if(str.trim().length()>2) { list.add(str); } } for(;m<list.size();m++) { System.out.print(list.get(m)); int b=sc.nextInt(); if(b==array.get(m)) { t++; } else { f++; } } System.out.println("共答对"+t+"道题"); System.out.println("答错"+f+"道题"); } }
结果截图:
感悟:
本题难度中等,主要考验的是输入输出流的内容,但本题也耗费了我将近4个小时,累觉不爱……第三个问题是折磨我时间最长的一个问题,后来干脆用输出至ArrayList的方法来保证题目的对应,这样才完成了这道题。
以上是关于关于输入输出流(四则运算)的主要内容,如果未能解决你的问题,请参考以下文章