Loading

四则运算文件流操作

使用System.setOut()方法改变输出流

比如 PrintStream outputStream=new PrintStream(new File(“ab.txt”));System.setOut(outputStream);//这时,系统的标志输出流就定向到了ab.txt 文件中。

如果想继续向控制台输出信息,则需要在setOut方法调用之前保存标准的输出流,

即:PrintStream out = System.out; System.setOut(out);

生成三道题实例:

package yunsuan;
import java.io.BufferedReader;
import java.io.PrintStream;
import java.util.Scanner;
import java.io.FileReader;
import java.io.IOException;
public class Yunsuan {
 public static void main(String[] args) throws IOException {
  int a1,a2;
  int b;
  int num=0;
  int i=0;
        String f[]=new String[4];
        f[0]="+";
        f[1]="-";
        f[2]="*";
        f[3]="/";
        int a[]=new int[100];
        //System.out.println("请选择100以内或1000以内");
        //m=sc.nextInt()+1;
        //System.out.println("请输入要产生的题数");
        //n=sc.nextInt();
        PrintStream out = System.out;
        PrintStream ps = new PrintStream("Test.txt");
        System.setOut(ps);
        for(i=0;i<3;i++)
        {
        a1=(int)(Math.random()*100);
        a2=(int)(Math.random()*100);
        if(a1<a2) {
         int n;
         n=a1;a1=a2;a2=n;
        }
        b=(int)(Math.random()*4);
        System.out.println("第"+(i+1)+"题:"+a1+f[b]+a2+"=");
        System.out.println("*");
        switch(b) {
        case 0:a[i]=(a1+a2);break;
        case 1:a[i]=(a1-a2);break;
        case 2:a[i]=(a1*a2);break;
        case 3:a[i]=(a1/a2);break;
        }
        }
        ps.close();
       
        System.setOut(out);
        System.out.println("题目:");
        BufferedReader br = new BufferedReader(new FileReader("Test.txt"));
        String line = "";
        Scanner sc=new Scanner(System.in);
        int answer[]=new int[100];
        int m=0;
        while((line = br.readLine()) != null){
          if(line.charAt(0)=='*') {
           System.out.print("请输入答案:");
           //System.out.println(a[m]);
              int n;
              n=sc.nextInt();
              answer[m]=n;
              if(answer[m]==a[m]) {num++;System.out.println("计算正确!");}
              else
               System.out.println("计算错误!");
              m++;
          }
          else {
           System.out.println(line);
          }
           
          
  }
        sc.close();
        br.close();
        System.out.println("共做了"+m+"题");
        System.out.println("共答对"+num+"题");
 }
}
 
 

 

存在问题:结果使用int保存,无法进行小数结果的计算。

posted @ 2018-11-15 22:35  李旭2018  阅读(123)  评论(0编辑  收藏  举报