コードの記述の仕方

このQ&Aのポイント
  • JDKではエラーなく実行できるが、JBuilderではエラーが出てコンパイル失敗になる。
  • 2行目には「メソッド宣言が無効です。戻り型は省略できません」というエラーが出る。
  • 3行目には「";"が必要です」というエラーが出る。関数の宣言部と間違えられていると思われるが、他にどのように記述すれば良いかわからない。
回答を見る
  • ベストアンサー

コードの記述の仕方

次のソースは、JDKではエラーなく実行できたのですが、 JBuilderではエラーが出てコンパイル失敗になります。 1 public class applet1 extends Applet { 2 public f(){ 3 double f(double x){ 4 return (Math.sin(2*x)+Math.cos(3*x)); 5 } … } 2行目には、「メソッド宣言が無効です。戻り型は省略できません」 3行目には、「";"が必要です」というエラーが出ます。 3行目のエラーは、関数の宣言部と間違えられているというのはわかるのですが、他にどのように記述したら良いかわかりません。JBuilderだからエラーがでるのでしょうか。 アドバイスをお願いします。

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

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

  • ベストアンサー
  • UKY
  • ベストアンサー率50% (604/1207)
回答No.1

> JDKではエラーなく実行できたのですが そんなことはありえません。ソースに明らかな誤りがあります。 まず2行目の public f() { ですが、エラーにもあるように、戻り値の型の記述が抜けています。 そして3行目の double f(double x){ ですが、f() メソッドの宣言の中で二重にメソッドを宣言しようとしているため、エラーになります。このことは質問者さんも分かっておられるようですが、 > 他にどのように記述したら良いかわかりません というようにいきなり聞かれても、答えるほうとしても困ります。何をしたいのか、どんなコードを書きたいのか、教えてください。

maruokundesu
質問者

補足

返事が遅くなってすみません。 作成したいプログラムは、sin2x+cos3xのグラフを描画するものです。前回提示したプログラムに続くのは、x、y軸や原点の描画をサイズにあわせて計算させて、描画させるプログラムです。 次のコードは、関数描画に用意したコードです。 for (int x=0 ; x<w-1; x++){ x0=-max+x*xd; y0=f(x0)*yd; x1=x0+xd; y1=f(x1)*yd; g.drawLine(x,(int)(hh-y0),x+1,(int)(hh-y1)); 説明不足で、ご迷惑をおかけします。

その他の回答 (1)

  • Sephy
  • ベストアンサー率35% (7/20)
回答No.2

上記のソースを「JDK」でコンパイルしました。 Z:\Java>javac applet1.java applet1.java:3: メソッドの宣言が不正です。戻り値の型が必要です。 public f(){ ^ applet1.java:4: ';' がありません。 double f(double x){ ^ エラー 2 個

maruokundesu
質問者

お礼

「JDK」でコンパイル頂き,ありがとうございます。 JDKの学習もやっていきたいと思います。 ありがとうございました。

関連するQ&A

  • このソースコードの意味

    import java.lang.Math; public class NewtonMethod { public static void main(String args[]){ double x = 0.785; while (true){ double x2 = x * 2; double xN = x - (Math.cos(x2) - x2 + 1)/(- 2 * Math.sin(x2) - 2); if (xN >= x){ break; } x = xN; } System.out.println(x); } } これのdouble xN = x - (Math.cos(x2) - x2 + 1)/(- 2 * Math.sin(x2) - 2);の部分がよくわかりません。 どなたか教えてください。よろしくお願いします。

    • ベストアンサー
    • Java
  • イベントの宣言について

    public class J_applet extends Applet implements ActionListener ,ItemListener { と宣言したところ、 J_applet は abstract でなく、java.awt.event.ActionListener 内の abstract メソッド actionPerformed(java.awt.event.ActionEvent) をオーバーライ ドしません。 とエラーがでました。 インポート宣言はきちんとしました。 上記のような書き方はもしかして出来ないんでしょうか?

    • ベストアンサー
    • Java
  • アプレットを実行すると、×が表示され、Javaアプレットの読み込みに失敗しました。のメッセージが表示されます。

    Java JDK5をインストールしました。 C:\Program Files\Javaに jdk1.5.0_06 jre1.5.0_06 がインストールされています。 コンパイルは、PATHにC:\Program Files\Java\jdk1.5.0_06\binを追加すれば、できるようになりました。 Javaアプレットの読み込みに失敗しました。のメッセージが表示されます。 // 図形の表示 import java.applet.*; import java.awt.*; public class Test_0002 extends Applet{ public void paint(Graphics g){ g.fillOval(0, 0, 200, 100); } }

    • ベストアンサー
    • Java
  • メソッドが同じオブジェクトのフィールドを参照しません

    <test1.javaファイル> import java.awt.*; public class test1 { //フィールドの定義 public int x = 10; //メソッドの定義 public void drawMoji(Graphics g) { g.drawString("xの値は、" + x, 20, 20); } } <test2.javaファイル> public class test2 extends test1 { //フィールドの定義 public int x = 20; } <mt.javaファイル> import java.awt.*; import java.applet.*; /* <applet code = "mt" width = 300 height = 200> </applet> */ public class mt extends Applet { public void paint(Graphics g) { //インスタンスの作成 test2 t2 = new test2(); //xの値を表すメソッドの実行 t2.drawMoji(g); } } 上記の3つのファイルをコンパイルして、mt.javaファイルをアプレットビュアーで実行したら、"xの値は、20"と表示したいのに、"xの値は、10"と表示されます。t2オブジェクトのフィールドのxの値が20だから、t2.drawMoji(g)で"xの値は、20"と表示されると思うのですが、どうしてこうなるのでしょうか?教えてください。

    • ベストアンサー
    • Java
  • フォルダ選択させる方法

    Web上のアプレットをユーザがIEで表示させて、アプレットのボタンを押すとフォルダ選択の ダイアログが出るものを作っています。 ダイアログはJFileChooserのものしか知らないのですが他によいものがありましたら教えてください。 JFileChooserでダイアログを出そうとしていますが、 public class AppletMain extends Applet implements ActionListener{ JFileChooser filechooser = new JFileChooser(""); これでjava.lang.ClassNotFoundException: javax.swing.JFileChooserのエラーが出ます。 JFileChooserの動作確認で public class AppletTest extends JFrame implements ActionListener{ JFileChooser filechooser = new JFileChooser(""); だとうまくいきます。 public class AppletMain がextends Appletなのが実行時エラーの原因だと思って public class AppletMain extends Applet,JFrame implements ActionListener{ とするとコンパイルエラーでした。こんなことも試さないと分からないほど素人です。 フォルダ選択させる方法を教えてください。

  • アプレットでスクロールバーを作りたいがコンパイルエラーが出る。

    アプレットでスクロールバーを作ろうと思っています。下記のコードをコンパイルすると 「import java.applet.Applet;abstract として宣言する必要があります。」とコンパイルエラーになります。いろいろ調べましたが原因がわかりません。なぜこのようなことが生じるのでしょうか? import java.awt.*; import java.awt.event.*; public class testScroll extends Applet implements AdjustmentListener{ Scrollbar sbar; public void init(){ setLayout(new BorderLayout()); sbar=new Scrollbar(Scrollbar.HORIZONTAL,1,10,1,300); add("South",sbar); sbar.addAdjustmentListener(this); } public void paint(Graphics g){ g.setColor(Color.gray); g.fillRect(0,0,350,150); } public void adjustmentValueCanged(AdjustmentEvent e){ if(e.getAdjustable()==sbar){ repaint(); } } } ■C:\**> javac testScroll.java testScroll.java:7: testScroll は abstract として宣言する必要があります。 adjustmentValueChanged(java.awt.event.AdjustmentEvent) を testScroll で定義しません。 public class testScroll extends Applet implements AdjustmentListener{ ^ エラー 1 個

    • ベストアンサー
    • Java
  • コンパイルエラーの対応

    下記のプログラムをコンパイルしたらエラーが発生しました。 プログラム自体は本をそのまま書き写したのですが、何がいけないのでしょう。 教えてください。よろしくお願いします。 Javaのバージョンは1.3.1です import java.applet.*; import java.awt.*; import java.awt.event.*; public class sample3 extends Applet implements ActionListener { Button bt; public void init() { bt = new Button("押します!"); bt.addActionListener(this); add(bt); } public void actionperformed(ActionEvent ae) { bt.setLabel("押しました!"); } } -----------------エラー内容----------------------- sample3.java:4: sample3 は abstract として宣言する必要があります。 actionPerformed(java.awt.event.ActionEvent) を sample3 で定義しません。 public class sample3 extends Applet implements ActionListener ^

    • ベストアンサー
    • Java
  • 3角関数における2倍角公式の表現

    Javaを用いた3角関数の計算がうまくできません。 ●式● sin^2(x) + cos^2(x) = 1  ※sin^2(x) = ( 1 - cos2x ) / 2, cos^2(x) = ( 1 + cos2x ) / 2   角度 x は任意 上記のような2倍角の公式を計算したいのですが 1 になりませんっ ●ソース● public class CS2x { public static void main(String[] args) { double t = 30; double x = 2 * t; System.out.println("Cos^2(x)+Sin^2(x)=" + ((1 - Math.cos(x)) / 2) + ((1 + Math.cos(x)) / 2)); } } どうしたら良いでしょうか!?

    • ベストアンサー
    • Java
  • 【java applet】他のクラスを呼び出して図形を描写するには

    はじめまして。 非常に簡単なことで、申し訳ないのですが質問させていただきます。 アプレットをextendsしたAppクラスで 他のMakeImgクラスのインスタンス(mi)を 作成し、MakeImgクラスのペイントメソッドを 実行して、図形を描写したいのですが、 下記のプログラムではコンパイルできても 図形が描写されません。 ペイントメソッドは明示的に呼び出さなくても 呼ばれるはずなので図形を描いてくれてもよさそうなのですが。。。 どなたか詳しい方、同じような問題を経験した方がいらっしゃったらぜひ回答していただければと思います。 それではよろしくお願い致します。 ////////////////////////////////////////////// import java.applet.Applet; import java.awt.*; /* <applet code="App.class" width="300"height="300"> </applet> */ public class App extends Applet {  MakeImg mi;  public void init()  {   mi = new MakeImg();  } } class MakeImg {  public void paint(Graphics g)  {   g.setColor(Color.white);   g.fillRect(0 , 0 , 300 , 300);   g.setColor(Color.black);   g.drawString("test",40,30);  } }

  • visual C++だとコンパイルできるのに、borlandだとできません。

    borlandと、VisualC++の両方使っているのですが、VisualC++だとコンパイルでき、実行できます。 しかし、Borlandでコンパイルしようとすると、「宣言が正しく終了していない」とエラーが出てしまいます。 学校の課題で、Borlandでコンパイルしたいのですが、どうすればいいのか分かりません。 ソースを載せるので、どこがいけないのか、教えてください。 sin(x)の値を入力して、x度を求めるプログラミングです。 #include<stdio.h> #include<math.h> int main(void) { double x_mid, x0=0, x1=90, y_mid, y0, y1, M_PI=3.14159265358979; float y_ans; printf("sin(x)はいくつ?\n"); scanf("%f", &y_ans); for( ; ;) { x_mid=0.5*(x0+x1); y0=sqrt(1-cos(M_PI*x0/180)*cos(M_PI*x0/180)); y1=sqrt(1-cos(M_PI*x1/180)*cos(M_PI*x1/180)); y_mid=sqrt(1-cos(M_PI*x_mid/180)*cos(M_PI*x_mid/180)); if(y0-y_ans>0 || y1-y_ans<0) { printf("答えが出ません。もう一度sin(x)は?\n"); scanf("%f", &y_ans); continue; } if(fabs(y0-(double)y_ans) <= 0.000000001) break; else if((double)y_ans < y_mid) { x1=x_mid; } else { x0=x_mid; } } printf("sin(x)=%fのとき、xは%f度\n",y_ans, x0); return 0; }