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ランキング
-
ダブルクォーテーションを含む...
-
JSPでHashMap・配列の変数の値...
-
wsprintf関数の使い方について
-
DateTimePickerに値を入れたい...
-
このプログラミング誰か教えて...
-
VB6,論理演算子Orの使い方がわ...
-
C#について質問です。文字列型(...
-
C言語の変数(LSB)の合わせ込...
-
実行シェルからCOBOLへパラメー...
-
EL式でのbeansからの値取得につ...
-
Excel VBA マクロ 変数を用いた...
-
JSPでの計算結果表示
-
javaの演算子の部分ですが 4行...
-
java nビット目を読み取る
-
指定した日付が何日前なのかを...
-
このプログラミング誰か教えて...
-
char型での演算子
-
【Excel VBA】繰り返し処理がで...
-
ResultSetの内部構造(Java)
-
Evaluate()に文字列の形式の数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ダブルクォーテーションを含む...
-
wsprintf関数の使い方について
-
javaのCSVデータ読込についてです
-
ArrayListの要素数の上限
-
特定の文字列を複数抜き出した...
-
Stringクラスの変数の格納アド...
-
結合した文字列をファイル名に...
-
BCD形式で時刻を!
-
DateTimePickerに値を入れたい...
-
Evaluate()に文字列の形式の数...
-
実行シェルからCOBOLへパラメー...
-
hiddenの値を消したくない!
-
DOSバッチで変数の値を変数名に...
-
C言語の変数(LSB)の合わせ込...
-
excel vba 時間計算と条件分岐...
-
Javaの問題なのですが、「3文字...
-
matchesを否定文として使う方法...
-
JSPでの計算結果表示
-
8桁整数を限りなく短い文字列に...
-
指定した日付が何日前なのかを...
おすすめ情報