iアプリの関数(log)について

このQ&Aのポイント
  • iアプリの関数(log)の計算方法について説明します。
  • FastMathクラスとMathクラスでlog関数を使用する方法を比較します。
  • Dojaでのlog関数のサポートに関して調査します。
回答を見る
  • ベストアンサー

iアプリの関数(log)について

関数(log)を計算したいのですが、MathクラスでもFastMathクラスでもうまくいきませんでした。 以下のコードだと「シンボルを解釈処理できません」とメッセージが出てコンパイルできません。何か間違っているのでしょうか。それともDojaではlogをサポートしていないのでしょうか? import com.nttdocomo.ui.*; import com.nttdocomo.ui.util3d.*; public class A extends IApplication { public void start() { float res1; res1 = FastMath.log(0.5); System.out.println("FastMathクラス**********"); System.out.println("log(0.5) = " + res1); double res2; res2 = Math.log(0.5); System.out.println("Mathクラス**********"); System.out.println("log(0.5) = " + res2); } }

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

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

  • ベストアンサー
noname#257915
noname#257915
回答No.2

参考URLの[iアプリ]-[iアプリ技術資料のダウンロード]にある資料に 目を通すことをお勧めします。 JavaDocぐらいちゃんと読んだほうが良いですよ。 「iアプリコンテンツ開発ガイド for DoJa-4.0  各機種オプションAPI・拡張API実装状況」 を見る限り2005年度後期発売機種にはC3DMathは削除されている ようです。SH901iSは実装されていないようです。 サポートされていなければ使うとUnsupportedOperationException が発生するはずなので使用してみればわかります。 ご自分でlogのアルゴリズムを実装するしかないですね。 logの近似計算アルゴリズムは詳しくないので再度質問されるか検索 して下さい。

参考URL:
http://www.nttdocomo.co.jp/p_s/imode/make/java/index.html
vega0707
質問者

お礼

詳細に教えて戴き大変ありがとうございました。 logのアルゴリズムを検索してみます。

その他の回答 (1)

noname#257915
noname#257915
回答No.1

DojaのJavaDocをすみずみまで確認しましたか。 見た限りMathとFastMathではlogはサポートされていないようです。 オプションAPIのC3DMathにはサポートされているようです。 ただオプションAPIはすべての機種で確実に実装がされている保証 がないので、あなたがどの機種を対象としているかで使えないかも しれません。

vega0707
質問者

補足

やはりlogはサポートされていないんですね。 できればSH901iSで動かしたいと思います。オプションAPIについて良く分からないのですが、機種によって対応していないのでしょうか?

関連するQ&A

  • iアプリでの関数の計算について

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

    • ベストアンサー
    • Java
  • iアプリ 色変更

    初歩的質問ですが・・・ import com.nttdocomo.ui.*; public class TEST01 extends IApplication { public void start(){ MyCanvas mc = new MyCanvas(); Display.setCurrent(mc); } } class MyCanvas extends Canvas{ public void paint(Graphics g){ g.setColor(g.getColorOfName(g.AQUA)); g.fillRect(0,0,200,200); } } で、g.setColor(g.getColorOfName(g.AQUA))の部分で、 「 Graphics からの static メソッド getColorOfName(int) には静的にアクセスしてください。」 と、エラーがでます。 ですが、実行はできます。なぜ??

    • ベストアンサー
    • Java
  • iアプリ 複数パネル切替時の変数受渡

    iアプリのプログラムについて 画面を複数のパネル、キャンバスで切り替えて使用する時、変数はどのように受け渡ししたらよいのでしょうか? 例えば import com.nttdocomo.ui.*; public class TEST extends IApplication { MainCanvas mc; MainPanel mp; public void start() { mc = new MainCanvas(); mp = new MainPanel(); Display.setCurrent(mc); } } class MainCanvas extends Canvas { int DATA_x public MainCanvas() {     ~~~~ } } class MainPanel extends Panel { public MainPanel() {     ~~~~~ ここで変数DATA_xを使用したい!     ~~~~~~ } } という感じです。

    • ベストアンサー
    • Java
  • iアプリで複数の画面(パネル)を使いたいのですが。

    以下のコードを実行するとボタンとラベルが一緒の画面に表示されますが、ボタンを押した時に新しい画面(パネル)でラベルを表示したいのです。どのようにすれば良いのでしょうか? import com.nttdocomo.ui.*; import com.nttdocomo.io.*; public class test01 extends IApplication { public void start() { mypanel w_panel = new mypanel(); w_panel.setSoftLabel(w_panel.SOFT_KEY_1,"終了"); Display.setCurrent(w_panel); } class mypanel extends Panel implements SoftKeyListener { private Label w_label; private Button w_button; public mypanel(){ w_button = new Button("ボタン"); add(w_button); w_label = new Label("ラベル"); add(w_label); setSoftKeyListener(this); } public void softKeyReleased(int param){ if(param == this.SOFT_KEY_1){ terminate(); } } public void softKeyPressed(int param){ } } }

    • ベストアンサー
    • Java
  • テキストファイルをリソースから読み込む(iアプリです)

    最近Javaでiアプリを作り始めた者です。 リソースにあるテキストファイルを取得して、内容をそのまま画面に出すアプリを作っています(最終的にはゲームが作りたく、そのための練習です)。 本を読むなりしているのですが、どうしても分からないので質問させて頂きます。 import com.nttdocomo.ui.*; final class HelloWorldCanvas extends Canvas{ public void paint(Graphics g){ String aaa; MediaData d=MediaManager.getData("resource:///0.txt"); try{ d.use(); } catch (Exception e){ } aaa=d.getData(); g.drawString(aaa,0,20); } } IApplicationクラスを定義しているHelloWorld.JavaからHelloWorldCanvasを呼び出して、上のソースはHelloWorldCanvasのソースです。 これをiαppliToolでビルドすると、 C:\~\HelloWorldCanvas.java:12: シンボルを解釈処理できません。 シンボル: メソッド getData () 位置 : com.nttdocomo.ui.MediaData の インタフェース aaa=d.getData(); と出てきてしまいます。 Javaは本当に初めてなので慣れている方から見たら意味不明なことをしているかも知れませんが、どうかご回答お願いします。

    • ベストアンサー
    • Java
  • iアプリとサーブレットの連動(eclipse)

    はじめまして、java初心者の者です。 現在私は、eclipseを使って、iアプリ開発に挑戦しています。 その中で、iアプリとサーブレットを連動させる方法が分からず、困っています。 iアプリ上の画面で、aと入力してサーブレットに送ると、サーブレットでテキストデータを書き換え、Aに変更して送り返すという、本当に初歩的な動作を試したいのですが、上手く連動してくれません。 ネット上のサンプルソースを丸写しで使っても動かないため、おそらく設定やファイルの置き場所、接続先の記述などに問題があるのだと思います。 インターネット等でいろいろと情報を集めてみたのですが、そもそもeclipseの中でDoJaプロジェクトを作成した場合、サーブレットを使うにはどのような設定が必要なのか、またデータはどのフォルダへ保存するべきなのかといった基礎的な情報が収集できず、困っています。 tomcatプロジェクトを作成し、その中でjspとサーブレットを連動させるテストは成功したのですが、DoJaプロジェクトではweb.xmlファイルを作らなくていいのか?など、本当に基礎的な部分が全く理解できていません・・・。 また、以下がネット上で拾ったサンプルコードです。 同じフォルダにあるサーブレット(Test)と連動させたいと思っているのですが、下記に何か間違いはないのでしょうか? ---------------------------------------------------------------- import com.nttdocomo.ui.*; import java.io.*; import com.nttdocomo.io.*; import javax.microedition.io.*; public class A extends IApplication { public void start() { String res = http("servlet/Test?test=a"); showDialog(res); } void showDialog(String s) { Dialog d = new Dialog(0, "dialog"); d.setText("" + s); d.show(); } String http(String name) { String url = IApplication.getCurrentApp().getSourceURL(); url += name; String res = null; HttpConnection conn = null; try { conn = (HttpConnection)Connector.open(url, Connector.READ); conn.setRequestMethod(HttpConnection.GET); conn.connect(); InputStream in = conn.openInputStream(); int len = (int)conn.getLength(); byte[] buf = new byte[len]; int off = 0; for (;;) { int n = in.read(buf, off, len); if (n < 0) throw new Exception(); off += n; len -= n; if (len == 0) break; } in.close(); conn.close(); return new String(buf); } catch (Exception e) { try { conn.close(); } catch (Exception e2) { } } return null; } } --------------------------------------------------------------- 本当に基礎的な質問で申し訳ありません。 どなたかご存知の方がいらっしゃいましたら、何卒よろしくお願いいたします。 ※以下、私の環境をお伝えいたします。 ・eclipse3.1 ・DoJa-5.1 ・apache-tomcat-6.0.20

    • ベストアンサー
    • Java
  • private voidなメソッドはstatic コンテキストですか

    コンパイルエラーで、 「static コンテキストから参照することはできません」 と表示されます。 ソースにstaticという文字は有りません。 private voidなメソッドはstatic コンテキストですか? [Foo.java] import com.nttdocomo.ui.*; public class Foo extends IApplication {  public void start() {   Display.setCurrent(new MyPanel());  } } class MyPanel extends Panel {  private void e() {   Bar.DShow(Dialog.DIALOG_ERROR, "", "");  } } [Bar.java] import com.nttdocomo.ui.*; public class Bar {  public void DShow(int type, String title, String body) {   Dialog d = new Dialog(type, title);   d.setText(body);   d.show();  } }

    • ベストアンサー
    • Java
  • iアプリ/サイコロの作り方

    Doja5.1 J2SDK1.4.2 を使ってソースを書いています。 まずサイコロを振るプログラムを作って、そのあとサイコロの数字を画像で表示できるようなものを作りたいです。 サイコロの画像はgifで用意してあります。 まずサイコロを振るプログラムですが以下のように書きました。 しかし、エラーが出ないにも関わらずエミュレータで動きません。 どこが間違っているのかどなたか教えてください。 また、画像を表示するほうのプログラムはどこを変えれば良いでしょうか。 よろしくお願い致します。 import com.nttdocomo.ui.*; import java.util.Random; class MainCanvas extends Canvas { int dice[] = new int[8*2]; Random rnd = new Random(); boolean init_flg = false; public MainCanvas() { setSoftLabel(Frame.SOFT_KEY_1,"サイコロ"); setSoftLabel(Frame.SOFT_KEY_2,"終了"); } public void paint( Graphics g ) { if(init_flg == false) { init_flg = true; return; } g.clearRect(0,0,200,2*8*13+30); int i; for(i=0;i<8*2;i++) { g.drawString(Integer.toString(i+1)+"回目のサイコロ",0,i*13+30); g.drawString(Integer.toString(dice[i]),100,i*13+30); } } public void processEvent( int type, int param ) { if( type == Display.KEY_PRESSED_EVENT ) { if( param == Display.KEY_SOFT1 ) { int i; for(i=0;i<8*2;i++) { dice[i] = rnd.nextInt(11)+2; } repaint(); } else if( param == Display.KEY_SOFT2 ) { IApplication.getCurrentApp().terminate(); } }

    • ベストアンサー
    • Java
  • NullpointerExceptionエラー

    dojaでアプリを作成しようとしたところ下記エラーが出ました。 いろいろ調べたのですが原因がわかりません。 どなたかご教授お願いします。 ---------------- java.lang.NullPointerException at com.nttdocomo.ui.GraphicsImpl.drawImage(+75) at com.nttdocomo.ui.FrameGraphics.drawImage(+7) at C.paint(+34) at com.nttdocomo.ui.Display$1.run(+186) C ---------------- ちなみにjavaは初心者です。

    • ベストアンサー
    • Java
  • index.htmlの代わりにサーブレットを実行

    localhost:8080でindex.htmlを表示する代わりにServlet.classを実行したいのですがtomcat5の設定を教えてください。ちなみにlocalhost:8080/servletで実行するところまでは、本に載ってたので分かってます。 public class Servlet extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException { res.setContentType("text/html"); PrintWriter out = res.getWriter(); out.println("<HTML>"); out.println("<BODY>"); out.println(new java.util.Date()); out.println("</BODY>"); out.println("</HTML>"); } }

    • ベストアンサー
    • Java