No.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を用意してやってみました。
??が右辺にあるのか左辺にあるのか調べる場合はどうしたら良いのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Excel(エクセル) エクセルでSUMIFS関数で条件範囲の部分が#valueになる。 4 2023/04/28 12:42
- Ruby ruby 1 2022/06/10 13:31
- Ruby パイソンでテキストファイルが読み込めない 1 2022/11/14 16:42
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- Visual Basic(VBA) エクセルVBAでメールの自動作成の モジュールを作ったのですが、txtファイルから読み込んだ本文が文 2 2022/07/20 15:01
- 数学 画像の問題について、途中式~解答までをなぜそうなるのかの解説ふまえて教えてほしいです。 (打ち込むと 1 2023/02/23 11:50
- システム CPUの問題について 2 2022/07/09 12:04
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/03 13:18
- 日本株 株についてですが、決算が出て決算書を読んで内容がよくないのて次の日に売ろうと思ってもすでにがっつり下 6 2023/06/13 21:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
String型の値が大文字か小文字...
-
DateTimePickerに値を入れたい...
-
特定の文字列を複数抜き出した...
-
線形合同法(乗算型)による乱...
-
Evaluate()に文字列の形式の数...
-
Javaの問題なのですが、「3文字...
-
ダブルクォーテーションを含む...
-
偶数ビットだけと奇数ビットだ...
-
String str = "a\\\\b\\\\c";
-
excel vba 時間計算と条件分岐...
-
プログラミング言語で変数って...
-
struts ActionFormについて
-
ダブルクォーテーションとシン...
-
バイト配列からfloat型の数値を...
-
wsprintf関数の使い方について
-
VBAで配列の計算
-
配列にnullを代入すると、null...
-
ループ処理の際、最後だけ","を...
-
配列をセッションに割り当てた後で
-
1~100までの数字を表示し、か...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ダブルクォーテーションを含む...
-
wsprintf関数の使い方について
-
javaのCSVデータ読込についてです
-
ArrayListの要素数の上限
-
特定の文字列を複数抜き出した...
-
Stringクラスの変数の格納アド...
-
結合した文字列をファイル名に...
-
BCD形式で時刻を!
-
DateTimePickerに値を入れたい...
-
Evaluate()に文字列の形式の数...
-
実行シェルからCOBOLへパラメー...
-
hiddenの値を消したくない!
-
DOSバッチで変数の値を変数名に...
-
C言語の変数(LSB)の合わせ込...
-
excel vba 時間計算と条件分岐...
-
Javaの問題なのですが、「3文字...
-
matchesを否定文として使う方法...
-
8桁整数を限りなく短い文字列に...
-
JSPでの計算結果表示
-
指定した日付が何日前なのかを...
おすすめ情報