- ベストアンサー
txtから読み込んだ計算式の結果を別のtxtに書き込む
1 + 2 = ?? ?? - 3 = 4 3 * 4 = ?? 4 / ?? = 2 が記述されているtest1.txtを読み込み、 ??の値を求めて、anser.txtに書き込むという課題がでたのですが 読み込んだ計算式をどう計算すればよいのかわかりません。 もし、よろしければ教えて下さい。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
課題の丸投げは禁止事項なのでヒントだけ… 1.テキストファイルから1行読み込む 2.読み込んだ数式を各項目に分解する (数値/演算子/等号に分解) 3.??が右辺ならそのまま数式を演算 4.??が左辺なら逆演算をする (例えばa * ?? = bなら?? = b / aを演算する) 5.演算結果をテキストファイルに書き出す 6.入力テキストファイルがEOFになるまで1.から繰り返す これで良いかな?
お礼
ありがとうございました。 まだまだ修正箇所はのこっていますがなんとかできました。
補足
public class sample { public static void main(String[] args){ int x = 0; int y = 0; int z = 0; int c = 0; int flag =0; try{ FileReader in = new FileReader("test2.txt"); BufferedReader buf = new BufferedReader(in); String line; while((line = buf.readLine()) != null){ String a[] = line.split(" "); String b[] = new String[a.length]; for(int i=0; i<a.length; i++){ b[i] = a[i]; if(a[i].equals("+")){ b[i]="2"; }else if(a[i].equals("-")){ b[i]="2"; }else if(a[i].equals("*")){ b[i]="2"; }else if(a[i].equals("/")){ b[i]="2"; }else if(a[i].equals("=")){ b[i]="0"; }else if(a[i].equals("??")){ b[i]="3"; }else{ b[i]="1"; } } for(int i=0; i<a.length; i++){ if(b[i].equals("1")){ if(x==0){ if(a[i].equals("1")){ x=1; } if(a[i].equals("2")){ x=2; } if(a[i].equals("3")){ x=3; } if(a[i].equals("4")){ x=4; } if(a[i].equals("5")){ x=5; } if(a[i].equals("6")){ x=6; } if(a[i].equals("7")){ x=7; } if(a[i].equals("8")){ x=8; } if(a[i].equals("9")){ x=9; } }else{ if(a[i].equals("1")){ y=1; } if(a[i].equals("2")){ y=2; } if(a[i].equals("3")){ y=3; } if(a[i].equals("4")){ y=4; } if(a[i].equals("5")){ y=5; } if(a[i].equals("6")){ y=6; } if(a[i].equals("7")){ y=7; } if(a[i].equals("8")){ y=8; } if(a[i].equals("9")){ y=9; } } } if(b[i].equals("2")){ if(a[i].equals("+")){ flag =1; } if(a[i].equals("-")){ flag =2; } if(a[i].equals("*")){ flag =3; } if(a[i].equals("/")){ flag =4; } } if(b[i].equals("3")){ if(flag==1){ z = x + y; x = 0; y = 0; } if(flag==3){ c = x * y; x = 0; y = 0; } } } } int[] str = {z, c}; try{ PrintWriter pr = new PrintWriter(new BufferedWriter(new FileWriter("anser.txt"))); for(int i=0; i<str.length; i++){ pr.println(str[i]); } pr.close(); }catch(IOException e){ System.out.println("入出力例外発生!"); System.out.println(e); } in.close(); }catch(IOException e){ System.out.println("入出力例外発生!"); System.out.println(e); } } } ヒントありがとうございます。 とりあえず1 + 2 = ??、3 * 4 = ??の二つを記述したtest2.txtを用意してやってみました。 ??が右辺にあるのか左辺にあるのか調べる場合はどうしたら良いのでしょうか?