我在练习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){}
}
}
知道是什么造成了这个错误或有更好的方法吗?
感谢。