プログラマーの達人の問題エラー解決

この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); }

  • Java
  • 回答数1
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • mahojula
  • ベストアンサー率32% (21/65)
回答No.1

正しい解答は どんな回答を行えばよいのかわからないので、  エラーの意味だけ。  内容:   呼び出してるメソッドがどこにも みつからないので エラーになっています。  回避方法:   public double basis(double amt){処理} public double extra(double amt){処理}  のメソッドを 追加すると コンパイル問題は解決します。。   basis と extra で それぞれどんな処理を行うのか分からないので   この程度の回答で ごめんなさい。。。

30777665
質問者

お礼

回答ありがとうございます☆ おかげさまでエラーは消えました!! どうもありがとうございます。

30777665
質問者

補足

とりあえずエラーはなくなったんですけど、どんな処理をするプログラムかがよくわかりません><

関連するQ&A

  • show()について

    class Rectangle { public static void main(String args[]) { double base=6; double height=5; double area; area=calc(base, height); System.out.println("area="+area); void show(); } public static double calc( double base, double height){ double area; area=(base*height); return area; } } このように四角形の面積を求めるプログラムをつくったんですが、 これにshowメソッドを加えて縦よ横の長さを表示したいのですが どのようにすればいいのでしょうか?

  • java iを1づつ増やすプログラムと2づつ増やすプログラム

    次のようにすればiを1づつ増やして表示されます。 class Calc{   int i=1;   int add(){     return i++;   } } class Count{   public static void main(String[] args){     Calc calc = new Calc();     System.out.println("i = " + calc.add());     System.out.println("i = " + calc.add());     System.out.println("i = " + calc.add());   } } 実行結果 i = 1 i = 2 i = 3 しかし次のように2づつ増やそうとすると、 class Calc{   int i=1;   int add(){     return i+2;   } } class Count{   public static void main(String[] args){     Calc calc = new Calc();     System.out.println("i = " + calc.add());     System.out.println("i = " + calc.add());     System.out.println("i = " + calc.add());   } } 実行結果 i = 3 i = 3 i = 3 このようになってしまいます。どこがおかしいのでしょうか?

    • ベストアンサー
    • Java
  • 戻り値?

    僕は学生なんですけど、皆さんに問いたいことがあります import java.util.Scanner; public class asd { public static void main(String[] args) { System.out.println("数を入力してください"); System.out.println("入力した数に3.14を掛け、計算します"); Scanner scan1 = new Scanner(System.in); int tex = scan1.nextInt(); double tex1; tex1 = calc(tex); System.out.println(tex + "かける3.14は" + tex1); } private static double calc(double tex) { double t = tex * 3.14; return t; } } ちょっと作ってみました・・ これなんですけど 最後の return t; というのは別になんでもいいんですか? もしよければ、回答よろしくおねがいします!

    • ベストアンサー
    • Java
  • なぜ?コンパイルできないのでしょうか?

    タイトルのとおりなんですが、よろしくお願いします。 (-人-) public class Calc1 { public static void main (String[] args) { System.out.println("加算の結果は"+(3+2)+"です。");     System.out.println("減算の結果は"+(5-8)+"です。"); System.out.println("乗算の結果は"+(3*4)+"です。"); System.out.println("除算の結果は"+(7/3)+"です。");  } }

    • ベストアンサー
    • Java
  • printfの%fにおいて教本どおりなのにエラーが出ます

    本に書いてある通り、 ------------------------------------------------------------------ public class BreakTest { /** * @param args */ public static void main(String[] args) { int day = 1; double value = 1500; double rate = 1.05; System.out.println(day+"日目"); System.out.println("株価:"+value+"円"); System.out.println("上昇率:"+rate); while(value < 3000){ day++; value = value*rate; if(day >= 10){ break; } } System.out.println(day+"日目に"); System.out.printf("株価:%f円", value); } } ------------------------------------------------------------------ とプログラミングしたのに最後の文「System.out.printf("株価:%f円", value); 」 でエラーが出ます。エラーの内容は下記の通りです。 ------------------------------------------------------------------ Exception in thread "main" java.lang.Error: コンパイル問題が未解決です。 型 PrintStream のメソッド printf(String, Object[]) は引数 (String, double) に適用できません。 at BreakTest.main(BreakTest.java:24) ------------------------------------------------------------------ 何が間違っているのでしょうか?

  • Javaコンパイルエラー

    Javaにて以下のようなプログラムを作成していますが、 「演算子 ^ は引数の型 double, int で未定義です。」とエラーになりました。 色々な方のご協力もあり、ここまで作れましたが、 これより先が行き詰っています。 教えていただけないでしょうか。 ---------------------------------------------- // 分散を返すメソッド public class Kadai16 { public static void main(String args[]){ //double型の配列の生成 double[]a=new double[10]; argument(a); //配列aの要素[0]から[9]の内容を表示 System.out.println(a[0]); System.out.println(a[1]); System.out.println(a[2]); System.out.println(a[3]); System.out.println(a[4]); System.out.println(a[5]); System.out.println(a[6]); System.out.println(a[7]); System.out.println(a[8]); System.out.println(a[9]); //double total=sum(a)を実行する double total =sum(a); System.out.println("合計は"+total+"です。"); //使って平均を出す double heikin; mean(total); heikin = mean(total); System.out.println("平均は"+heikin+"です。"); //分散を返す double bunsan; bunsan = total-heikin^2/10; System.out.println("分散は"+bunsan+"です。"); } /** * ランダムな数値を入れるメソッド * @param a ランダムな数値を入れる配列 */ private static void argument(double[]a) { //引数の配列aの[0]から[9]までランダムな数値を設定する。 for(int i=0; i<a.length;i++) { a[i]=Math.floor(Math.random()*10); } } //配列を受け取って要素の合計を出すメソッド public static double sum(double[] x) { double t=0; for(int i=0; i<x.length;i++) { t= x[i]+t; } return t; } //配列を受け取って平均を出すメソッド public static double mean(double b) { return b/10; } //分散を返すメソッド public static double bunsan(double c) { double t=0; double bnsan =0; for(int i=0; i<c.length; i++) { t =c[i]+t } } }

  • Javaでipmportエラーになります

    以下の様なJavaのサンプルをコンパイルしたいのですが 「import chn.util.*;」がエラーになりConsoleIOクラスを利用できません。 エラーメッセージはつぎのとおりです。 ・ConsoleIO を型に解決できません ・インポートされた chn は見つかりません 環境は日本語版のEclipse 3.5 Heliosです。 このエラーの解決方法をご教示ください。 よろしくお願いいたします。 ************************************** import chn.util.*; public class samp03 { public static void main(String[] args) { ConsoleIO keyboard = new ConsoleIO( ); String word1, word2, anotherLine; char char1, char2; // ask for input from the keyboard System.out.print("Enter a line: "); // grab the first "word" word1 = keyboard.readToken(); // grab the second "word" word2 = keyboard.readToken(); // ask for input from the keyboard System.out.print("Enter another line: "); // discard any remaining input from previous line // and read the next line of input anotherLine = keyboard.readLine(); // output the strings System.out.println("word1 = " + word1); System.out.println("word2 = " + word2); System.out.println("anotherLine = " + anotherLine); char1 = anotherLine.charAt(0); char2 = anotherLine.charAt(1); System.out.println("char1 = " + char1); System.out.println("char2 = " + char2); } }

    • ベストアンサー
    • Java
  • 簡易電卓の問題がわかりません!

    簡易電卓のプログラミングについてご教授お願いしたく投稿いたしました。ほぼ合っていると思うのですが、実行できません。一番下の・・・の部分のプログラミングを教えてください!よろしくお願いいたします! import java.io.*; class TestCalc{ public static void main(String[] arg) { BufferedReader input= new BufferedReader(new InputStreamReader(System.in)); Calc calc=new Calc(); try{ String line; System.out.print("==> "); while((line=input.readLine())!=null){ int x=calc.process(line); System.out.println(x); System.out.print("==> "); } }catch(IOException e){ } } } //この後、Calcクラスの定義 class Calc{ private IntStack st; Calc(){ st=new IntStack(); } int process(String s) { if (s.equals("+")) { int n=st.pop()+st.pop(); st.push(n); return n; } else if (s.equals("-")) { } else if (s.equals("*")) { } else if (s.equals("/")) { } else { int n=Integer.parseInt(s); st.push(n); return n; } } } class IntStack{ ... }

    • ベストアンサー
    • Java
  • 前回の質問のプログラムの応用 Java言語

    MAX_QUESTION の部分を指定できるようにしたいのです! たとえば、20と入力したら、20問、問題が生成されるようなプログラムです。 教えてください。よろしくお願いします。 import java.io.*; public class Java05 { /** 表示する問題の個数 */ public static final int MAX_QUESTION=10; /** * 足し算の問題をMAX_QUESTION回繰り返して出題する。 * 最後に正答率を表示する。 */ public static void main(String[] args){ int goodAnswer=0; //正答の個数 System.out.println("これから足し算の問題を"+MAX_QUESTION+"問出します。"); /* * 以下、問題を繰り返し表示し、ユーザからの解答を判断する。 * その後、正答の数を数える。 */ for(int i=0;i<MAX_QUESTION;i++){ boolean ok=showQuestion(i+1); if(ok){ goodAnswer++; } } double rate=goodAnswer*100.0/MAX_QUESTION; System.out.println(""); System.out.println("問題は"+MAX_QUESTION+"問"); System.out.println("正答数は"+goodAnswer+"問"); System.out.println("不正解数"+(MAX_QUESTION-goodAnswer)+"問"); System.out.println("正答率は"+rate+"%"); } /** * showQuestionは足し算の問題を1問出し、答えを待つ。 * 正答、誤答の別を表示する。 * 正答の場合は ture を返す。 */ public static boolean showQuestion(int questno){ double dblA=Math.random()*1000; double dblB=Math.random()*1000; int intA=(int)dblA; int intB=(int)dblB; BufferedReader reader=new BufferedReader(new InputStreamReader(System.in)); try{ System.out.println("[第"+questno+"問] "+intA+"+"+intB+"="); String line=reader.readLine(); int result=Integer.parseInt(line); if(intA+intB==result){ System.out.println("正解!"); return true; }else{ System.out.println("不正解!"); return false; } }catch(IOException e){ System.out.println(e); }catch(NumberFormatException e){ System.out.println("入力が正しくありません。"); } return false; } }

  • 以下の問題の式について教えてください。

    以下についてご教示願います。 class Calculator { public int count = 0; public void calc(int n, int p) { count++; if (p>n) return; for (int i=0; i<n; i++) { calc(n, p+1); } } } // int nは、キーボードからの入力 Calculator c = new Calculator(); c.calc(n, 0); System.out.println(c.count); この時、出力されるc.countはどのくらいですか? nを用いた式で表してください。

    • ベストアンサー
    • Java