达到输入文件,按运算符读取文件和按行输出

第一部分 出题运算和导入文件

package test3;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Random;
import java.util.Scanner;

public abstract class text {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        @SuppressWarnings("resource")
        Scanner x=new Scanner(System.in);
        System.out.print("请输入一个整数:");
        int number=x.nextInt();
        int writer=0;
        try {
            //如果文件存在,则追加内容;如果文件不存在,则创建文件
            File file = new File("d://test.txt");
            FileWriter fw = new FileWriter(file, true);
            PrintWriter pw = new PrintWriter(fw);
            if(writer==0)
            {
                pw.println("20173517");
                writer=1;
                }
            System.out.println("20173517");
            for(int i=1;i<=number;i++)
            {
                //随机生成数
                Random rd=new Random();
                int data1=rd.nextInt(100)+1;
                int data2=rd.nextInt(100)+1;
                int data3=rd.nextInt(100)+1;
                //随机生成运算符
                String[] operator={"*","/","+","-"};
                Random r=new Random();
                int num1=r.nextInt(4);
                int num2=r.nextInt(4);
                String str=data1+operator[num1]+data2+operator[num2]+data3;
                //System.out.println(str);
                int result;
                if(operator[num1]=="+")
                {
                    if(operator[num2]=="+")
                    {
                        result=data1+data2+data3;
                        System.out.println(str+"="+"*");
                        System.out.println(result);
                        pw.println(str+"="+"*");
                        pw.println(result);
                        }
                    else if(operator[num2]=="-")
                    {
                        if(data1+data2>=data3)
                        {
                            result=data1+data2-data3;
                            System.out.println(str+"="+"*");
                            System.out.println(result);
                            pw.println(str+"="+"*");
                            pw.println(result);
                            }
                        else{
                            number++;
                            }
                        }
                    else if(operator[num2]=="*")
                    {
                        result=data1+data2*data3;
                        System.out.println(str+"="+"*");
                        System.out.println(result);
                        pw.println(str+"="+"*");
                        pw.println(result);
                        }
                    else
                    {
                        if(data2%data3==0 && data3!=0)
                        {
                            result=data1+data2/data3;
                            System.out.println(str+"="+"*");
                            System.out.println(result);
                            pw.println(str+"="+"*");
                            pw.println(result);
                            }
                        else{
                            number++;
                            }
                        }
                    }
                else if(operator[num1]=="-")
                {
                    if(operator[num2]=="+")
                    {
                        if(data1>=data2)
                        {
                            result=data1-data2+data3;
                            System.out.println(str+"="+"*");
                            System.out.println(result);
                            pw.println(str+"="+"*");
                            pw.println(result);
                            }
                        else{
                            number++;
                            }
                        }
                    else if(operator[num2]=="-")
                    {
                        if(data1>=data2)
                        {
                            if(data1-data2>=data3)
                            {
                                result=data1-data2-data3;
                                System.out.println(str+"="+"*");
                                System.out.println(result);
                                pw.println(str+"="+"*");
                                pw.println(result);
                                }
                            else{
                                number++;
                                }
                            }
                        else{
                            number++;
                            }
                        }
                    else if(operator[num2]=="*")
                    {
                        if(data1>=data2*data3)
                        {
                            result=data1-data2*data3;
                            System.out.println(str+"="+"*");
                            System.out.println(result);
                            pw.println(str+"="+"*");
                            pw.println(result);
                            }
                        else{
                            number++;
                            }
                        }
                    else{
                        if(data2%data3==0 && data3!=0)
                        {
                            if(data1>=data2/data3)
                            {
                                result=data1-data2/data3;
                                System.out.println(str+"="+"*");
                                System.out.println(result);
                                pw.println(str+"="+"*");
                                pw.println(result);
                                }
                            else{
                                number++;
                                }
                            }
                        else{
                            number++;
                            }
                        } 
                    }
                else if(operator[num1]=="*")
                {
                    if(operator[num2]=="+")
                    {
                        result=data1*data2+data3;
                        System.out.println(str+"="+"*");
                        System.out.println(result);
                        pw.println(str+"="+"*");
                        pw.println(result);
                        }
                    else if(operator[num2]=="-"){
                        if(data1*data2>=data3)
                        {
                            result=data1*data2-data3;
                            System.out.println(str+"="+"*");
                            System.out.println(result);
                            pw.println(str+"="+"*");
                            pw.println(result);
                            }
                        else{
                            number++;
                            }
                        }
                    else if(operator[num2]=="*")
                    {
                        result=data1*data2*data3;

                        System.out.println(str+"="+"*");
                        System.out.println(result);
                        pw.println(str+"="+"*");
                        pw.println(result);
                            }

                            else{

                                int result1=data1*data2;

                                if(result1%data3==0 && data3!=0)

                                {

                                    result=data1*data2/data3;

                                    System.out.println(str+"="+"*");
                                    System.out.println(result);
                                    pw.println(str+"="+"*");
                                    pw.println(result);
                                }

                                else{

                                    number++;

                                }

                            }

                        }

                        //第一个运算符为“/”

                        else{

                            if(data1%data2==0 && data2!=0)//判断data1能否被data2整除,且除数data2不能为0

                            {

                                if(operator[num2]=="+")//乘除的优先级高于加减,所以可以顺着往下计算

                                {

                                    result=data1/data2+data3;

                                    System.out.println(str+"="+"*");
                                    System.out.println(result);
                                    pw.println(str+"="+"*");
                                    pw.println(result);

                                }

                                else if(operator[num2]=="-")

                                {

                                    if(data1/data2>=data3)//判断data1/data2的商是否大于data3

                                    {

                                        result=data1/data2-data3;

                                        System.out.println(str+"="+"*");
                                        System.out.println(result);
                                        pw.println(str+"="+"*");
                                        pw.println(result);
                                    }

                                    else{

                                        number++;//不符合条件就将表达式的个数加1,进行下一个表达式的计算

                                    }

                                }

                                else if(operator[num2]=="*")

                                {

                                    result=data1/data2*data3;

                                    System.out.println(str+"="+"*");
                                    System.out.println(result);
                                    pw.println(str+"="+"*");
                                    pw.println(result);

                                }

                                else{

                                    int result1=data1/data2;

                                    if(result1%data3==0 && data3!=0)
                                        //判断data1/data2的商能否整除data3,且data3不能为0

                                    {
                                        result=data1/data2/data3;

                                        System.out.println(str+"="+"*");
                                        System.out.println(result);
                                        pw.println(str+"="+"*");
                                        pw.println(result);

                                    }

                                    else{

                                        number++;

                                    }

                                }

                            }

                            else{

                                number++;

                            }

                        }

                   

                    }

                    

                     pw.flush();

                     pw.close();

                     fw.close();

                 } catch (IOException e1) {

                     e1.printStackTrace();

                 }                
    }
    
}

第二部分 按行读取:

package test3;
import java.io.*;

public class date {
    File file=new File("D:\\test.txt");    
    public BufferedReader reader=null;        
    public String temp=null;    
    public int line=1;        
    {try{            
        reader=new BufferedReader(new FileReader(file));
        while((temp=reader.readLine())!=null){
            System.out.println(temp);
            line=line+2;            
            }    
        }        
    catch(Exception e){        
        e.printStackTrace();    
        }        
    finally{        
            if(reader!=null){    
                try{                
                    reader.close();        
                    }            
                catch(Exception e){            
                    e.printStackTrace();        
                    }        
                }    
            }    
}}

第三部分 验证答案,运算得分

package test3;

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.Scanner;

public class Yanz {
    public static int rightAnswer=0;
    date d=new date();
    public String b=d.temp;
    static int i=0; 
{
        try{
            BufferedReader br = new BufferedReader(new FileReader("test.txt")); 
            String line = "";
            while((line = br.readLine()) != null){
                if(line.charAt(0)=='*'){            
                    System.out.println("请输入答案");
                    String putAnswer = new Scanner(System.in).nextLine(); 
                   if(putAnswer.equals(b)){
                    rightAnswer++;
                   }
                   i++;
                }
                else{
                    System.out.println(line);
                }
            }
            System.out.println("总共答对"+rightAnswer+"道题,得分是"+rightAnswer*25);
            br.close();}
            catch(Exception e){
            System.out.println(e.toString());
            };
        }
    }

 

 posted on 2018-11-15 22:49  Aurinko  阅读(120)  评论(0编辑  收藏  举报