電子書籍の厳選無料作品が豊富!

関数(トランク関数とアークタンジェント)を計算したいのですが、以下のコードだと「シンボルを解釈処理できません」とメッセージが出てコンパイルできません。何か間違っているのでしょうか。


import com.nttdocomo.ui.*;

public class test01 extends IApplication {
private Panel p1;
private Label label1,label2;

public void start() {
p1 = new Panel();
double num1,num2;

num1 = Math.atan2(1.0,1.0);
num2 = Math.trunc(1.0);

label1=new Label("計算結果A "+ num1);
label2=new Label("計算結果B "+ num2);
p1.add(label1);
p1.add(label2);
Display.setCurrent(p1);
}
}

A 回答 (6件)

こんばんは。

FastMathクラスのメソッドはすべてfloat型で入出力を行うようなので、その点に気をつければうまくいきそうですね。
コンパイル時のエラー出力内容を確認すると、何がうまくいっていないのか分かります。

J2MEプログラミングは各機器(携帯電話以外も含む)共通のCLDCと、各機器メーカーが提供するプロファイル(iアプリの場合はDoJa)というように、(最低でも)2種類のクラスライブラリを使うことになると思います。
StringクラスやMathクラスなどは、CLDCに定義されていますので、DoJaだけではなく、CLDCの方も確認されると良いと思います。
CLDC1.0日本語ドキュメント
http://sdc.sun.co.jp/java/wireless/index.html
CLDC1.1英語ドキュメント
http://jcp.org/aboutJava/communityprocess/final/ …

以下のコードではコンパイルが通ると思います。
※truncメソッドは分かりません。
- - - - -
import com.nttdocomo.ui.*;
import com.nttdocomo.ui.util3d.*;

public class Test extends IApplication {

public void start() {

float res1, res2, res3;

res1 = FastMath.sin(30.0f);
res2 = FastMath.cos(45.0f);
res3 = FastMath.atan2(10.0f, 20.0f);

System.out.println("FastMathクラス**********");
System.out.println("sin(30.0) = " + res1);
System.out.println("cos(45.0) = " + res2);
System.out.println("atan2(10.0, 20.0) = " + res3);

double res4, res5;

res4 = Math.sin(Math.toRadians(30.0));
res5 = Math.cos(Math.toRadians(45.0));

System.out.println("Mathクラス**********");
System.out.println("sin(30.0) = " + res4);
System.out.println("cos(45.0) = " + res5);

}

}

-結果-
FastMathクラス**********
sin(30.0) = 0.49951172
cos(45.0) = 0.70703125
atan2(10.0, 20.0) = 63.430664
Mathクラス**********
sin(30.0) = 0.49999999999999994
cos(45.0) = 0.7071067811865476
    • good
    • 0
この回答へのお礼

初心者の私にもとても分かりやすく回答して下さったおかげで解決しました。
どうもありがとうございました!!

お礼日時:2005/08/05 22:29

http://www.nttdocomo.co.jp/p_s/imode/java/

iアプリコンテンツ開発ガイド for DoJa-4.0APIリファレンス編
をDLして中を見たら
com.nttdocomo.ui.util3d.FastMathクラスに
atan2(float a,float b)
ってのがありますね。

これが希望のものかわかりませんが。

この回答への補足

com.nttdocomo.ui.util3d.FastMathクラスでやってみましたが、コンパイルできませんでした。
また、com.nttdocomo.opt.ui.j3d.Mathクラスだとint型ですが、コンパイルできました。その代わりsinやcos等の他の関数がエラーになりました。解決法はないのでしょうか?

補足日時:2005/08/04 19:49
    • good
    • 0

>アークタンジェントを他の関数で近似して計算することってできないのでしょうか?


自分には内容が理解できないですが(笑)
http://www.kurims.kyoto-u.ac.jp/~ooura/pi04.pdf
↑のP2の(2)の式でできませんかね???

この回答への補足

数学が苦手なので、私にも理解できませんでした。

補足日時:2005/08/04 19:37
    • good
    • 0

>DoJa4.0から浮動少数をサポートするようになりましたよね?


あ、ホントですね。失礼しました。

>「ドキュメント」って何ですか?
資料のことです。この場合はJavaDocなどです。
DoJaなどをダウンロードしたときにこんな感じ↓のHTMLなどが付いてませんでしたか?
http://java.sun.com/j2se/1.5.0/ja/docs/ja/index. …
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/in …
下のURLのほうがJavaDocといわれる物で、各クラスのメソッドなどが分かります。
このURLはJDK5.0のものですが、SunやドコモのサイトにCLDC1.1やDoJa4.0
のものが置いてある筈なので、ダウンロードしてきましょう。
    • good
    • 0

iアプリ(というかJ2ME)には浮動小数(double,float)はないです。


J2MEのリファレンスが手元にないのできちんと調べてないのですが、
Mathクラスも、浮動小数に関するメソッドは省略されていませんか?

また、通常のJavaでは、小数の切捨てはMath.floor();です。

この回答への補足

DoJa4.0から浮動少数をサポートするようになりましたよね?

小数の切捨ては解決しました。
ありがとうございました。

補足日時:2005/08/03 22:24
    • good
    • 0

ないから。


じゃないでしょうか?

少なくとも
truncメソッド
はありませんでした。
(J2SE1.4とJ2SE1.5のjavadocの索引で確認)

iアプリ用のjavaにはあるかもしれませんので、ドキュメントなどを調べてみてはいかがでしょうか。

この回答への補足

「ドキュメント」って何ですか?
初心者なので何も分からなくてすみません。
またホントに無い場合、アークタンジェントを他の関数で近似して計算することってできないのでしょうか?

補足日時:2005/08/03 22:30
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!