※ ChatGPTを利用し、要約された質問です(原文:プログラマーの達人という本の問題をといていたのですがどうしても<dou)
プログラマーの達人の問題エラー解決
このQ&Aのポイント
プログラマーの達人の問題でエラーが発生しています。エラーメッセージには、メソッドbasis(double)が見つからないと書かれています。
コードの一部をリファクタリングすることで、エラーを解消することが可能です。
エラーの原因は、basisとextraの部分であり、メソッドが正しく呼び出されていないためです。
プログラマーの達人という本の問題をといていたのですがどうしても<dou
プログラマーの達人という本の問題をといていたのですがどうしても<double calc = 2 * basis(amt) + extra(amt) *1.05; >のbasisとextraの部分のエラーが消えなくて困っています。
エラーの内容は「シンボルが見つかりません シンボル:メソッドbasis(double) 場所:クラスrefactoring.main」と書いてあります。優しい方々どうか教えてください。
//演習問題
//38.以下のコードは何年もかけて幾度と無く修正されてきたものですが、
// その構造にまで遡ることなく変更されてきたことは明らかです。リファクタリングしてください。
//
// if (state == "TEXAS") {
// rate = TX_RATE;
// amt = base * TX_RATE;
// calc = 2 * basis(amt) + extra(amt) * 1.05;
// else if ((state == "OHIO") || (state == "MAINE")) {
// rate = (state == "OHIO") ? OH_RATE : MN_RATE;
// amt = base * rate;
// calc = 2 * basis(amt) + extra(amt) * 1.05;
// if (state == "OHIO") {
// points = 2;
// }
// } else {
// rate = 1;
// amt = base;
// calc = 2 * basis(amt) + extra(amt) * 1.05;
//私の回答
public class Main {
System.out.println("州を入力してください");
System.out.println("1:TEXAS,2:OHIO,3:MAINE");
int state = KeyBoard.readInt();
double rate;
double amt;
System.out.println("料金を入力してください");
double base = KeyBoard.readDouble();
switch (state) {
case 1:
System.out.println("テキサス州のレートを入力してください");
double TX_RATE = KeyBoard.readDouble();
rate = TX_RATE;
break;
case 2:
System.out.println("オハイオ州のレートを入力してください");
double OH_RATE = KeyBoard.readDouble();
rate = OH_RATE;
break;
case 3:
System.out.println("マイアミ州のレートを入力してください");
double MN_RATE = KeyBoard.readDouble();
rate = MN_RATE;
break;
default:
rate = 1;
int points = 2;
}
amt = base * rate;
double calc = 2 * basis(amt) + extra(amt) *1.05;
System.out.println("計算結果:" + calc);
}
お礼
回答ありがとうございます☆ おかげさまでエラーは消えました!! どうもありがとうございます。
補足
とりあえずエラーはなくなったんですけど、どんな処理をするプログラムかがよくわかりません><