如何在txt文件中进行算术运算并在另一个txt文件中显示结果?

时间:2017-03-13 02:17:32

标签: java

我在练习Java课程时遇到了一些问题。我需要做的是将一些信息放在“enter.txt”文件中,比如

Hello
5.0
+
5.0
World

并且在“out.txt”上我需要打印算术运算的结果,它应该是这样的:

Hello
10.0
World

我已经完成了将“enter.txt”的内容打印到“out.txt”的部分,但我试图在没有结果的情况下执行算术运算部分,我在控制台上出错了。

C:\Users\PC\Desktop>java miCalc enter.txt out.txt
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
        at miCalc.<init>(miCalc.java:35)
        at miCalc.main(miCalc.java:11)

这是Java程序的代码:

import java.io.*;
public class miCalc{
String input, output;
char operacion;
String[] num;
float resultado;
String dataFiles;
public static void main(String args[]){
    String input = args[0];
    String output = args[1];
    miCalc fileOp = new miCalc(input,output);
}
public miCalc(String input, String output){
    this.input = input;
    this.output = output;
    try{
        File f1 = new File(input);
        FileInputStream fstream = new FileInputStream(f1);
        DataInputStream in = new DataInputStream(fstream);
        BufferedReader br = new BufferedReader(new InputStreamReader(in));
        FileWriter fw = new FileWriter(output,true);
        BufferedWriter bw = new BufferedWriter(fw);
        do{
            dataFiles=br.readLine();
            if(dataFiles!=null){
                for(int i=0;i<dataFiles.length();i++){
                    if(dataFiles.charAt(i)=='+' || dataFiles.charAt(i)=='-' || dataFiles.charAt(i)=='*' || dataFiles.charAt(i)=='/'){
                        operacion=dataFiles.charAt(i);
                    }
                }
                String c=operacion+"";
                num=dataFiles.split("\\"+c);
                if(operacion=='+'){
                    resultado=Float.parseFloat(num[0])+Float.parseFloat(num[1]);
                    bw.write(resultado+"");
                    bw.newLine();
                }

                else if(operacion=='-'){
                    resultado=Float.parseFloat(num[0])-Float.parseFloat(num[1]);
                    bw.write(resultado+"");
                    bw.newLine();
                }
                else if(operacion=='*'){
                    resultado=Float.parseFloat(num[0])*Float.parseFloat(num[1]);
                    bw.write(resultado+"");
                    bw.newLine();
                }
                else if(operacion=='/'){
                    resultado=Float.parseFloat(num[0])/Float.parseFloat(num[1]);
                    bw.write(resultado+"");
                    bw.newLine();
                }

            }
        }while(dataFiles!=null);
            br.close();
            bw.close();
    }
    catch(FileNotFoundException e){}
    catch(IOException e){}
}
}

知道是什么造成了这个错误或有更好的方法吗?

感谢。

0 个答案:

没有答案