アプリ版:「スタンプのみでお礼する」機能のリリースについて

1 + 2 = ??
?? - 3 = 4
3 * 4 = ??
4 / ?? = 2
が記述されているtest1.txtを読み込み、
??の値を求めて、anser.txtに書き込むという課題がでたのですが
読み込んだ計算式をどう計算すればよいのかわかりません。
もし、よろしければ教えて下さい。

A 回答 (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を用意してやってみました。
??が右辺にあるのか左辺にあるのか調べる場合はどうしたら良いのでしょうか?

補足日時:2008/08/07 09:46
    • good
    • 0
この回答へのお礼

ありがとうございました。
まだまだ修正箇所はのこっていますがなんとかできました。

お礼日時:2008/08/08 14:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!