電卓の1部分をつくっています。
現在、23,36,39,56行目でシンボルが見つからないというエラーが発生しています。(エラー箇所に★をつけています)
スコープの問題と感じているのですが、例えば23行目、数字と判定したのちに配列であるw_expression_fieldに追加するにはどのようにすればいいのでしょうか。
上記、if文の外で宣言することで解決しました。
56行目のエラーに取り組みたいと思います。
ご教授のほどよろしくお願いいたします。
import java.io.;
import java.util.;
class Test {
int w_judge_count = 0; // 奇数回、偶数回の判定に使う
public static void main(String[] args) { ArrayList<String> w_expression_field = new ArrayList<String>(); while (true) { int w_judge_count = 0; // 奇数回、偶数回の判定に使う boolean w_number_judge = true; // 数字かどうかの判定に使う boolean w_operand_judge = true; // 演算子かどうかの判定 String w_changed_input_number = " "; String w_changed_input_operand = " "; if (w_judge_count % 2 == 0) { // 偶数回なら数字か判定 while (w_number_judge) { // 数字が入力されない限りループ System.out.println("数字を入力してください"); BufferedReader w_input_number = new BufferedReader(new InputStreamReader(System.in)); w_changed_input_number = w_input_number.readLine();// 入力された文字の型をStringに変換 w_number_judge = isJudgeNumber(w_changed_input_number); // falseが返ってこれば抜けれる } } w_expression_field.add(w_changed_input_number);// 入力された値を代入 if (w_judge_count % 2 != 0) { // 奇数回なら演算子か判定 //else ifでいけるか要検討 while (w_operand_judge) { System.out.println("演算子を入力してください"); BufferedReader w_input_operand = new BufferedReader(new InputStreamReader(System.in)); w_changed_input_operand = w_input_operand.readLine();// 入力された文字の型をStringに変換 w_operand_judge = isJudgeOperand(w_changed_input_operand); // falseが返ってこれば抜けれる } } if (w_changed_input_operand.equals("=")) { break; } w_expression_field.add(w_changed_input_operand);// 入力された値を代入 } // System.out.println("ループから抜け出しました"); } public static boolean isJudgeNumber(String p_number) { try { Integer.parseInt(p_number); return false; } catch (NumberFormatException e) { return true; } } public static boolean isJudgeOperand(String p_operand) { if (w_judge_count < 3 && p_operand.equals("=")) { // 最初に=を入力されないように ★ return true; } else if (p_operand.equals("+") || p_operand.equals("-") || p_operand.equals("*") || p_operand.equals("/")) { // 演算子ならfalseを返し、ループを抜ける return false; } else { return true; } }
}```
回答3件
あなたの回答
tips
プレビュー