ktanaka@ux019> appletviewer apptest.html
java.awt.AWTException: cannot open XIM
        at sun.awt.motif.X11InputMethod.(X11InputMethod.java:148)
        at sun.awt.motif.X11InputMethodDescriptor.createInputMethod(X11InputMethodDescriptor.java:78)
        at sun.awt.im.InputContext.getInputMethodInstance(InputContext.java:686)
        at sun.awt.im.InputContext.getInputMethod(InputContext.java:636)
        at sun.awt.im.InputContext.dispatchEvent(InputContext.java:188)
        at sun.awt.im.InputMethodContext.dispatchEvent(InputMethodContext.java:177)
        at java.awt.Component.dispatchEventImpl(Component.java:2527)
        at java.awt.Component.dispatchEvent(Component.java:2497)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:333)
        at java.awt.EventDispatchThread.pumpOneEvent(EventDispatchThread.java:103)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:84)
 
のようなものをそのまま,コピーアンドペーストしたものを送ってもらうと助
かる.
 
  double d=Double.parseDouble("1.32");
->
  double d=new Double("1.32").doubleValue();
 12/11 16:00時点で11名しか提出していない.今日は講義時間を減らして自習 時間を増やすので,自習時間中になるべく質問するように.
プログラムを作っても動かない場合(大概すぐ動かない)は,プログラムのミ ス(バグ bug)を取り除くデバッグ(debug)作業が必要になる.デバッグの際に は,ありがちなバグを知っておくと良い.初心者のおかすミスをいくつかあげ る.
例1
  for(i=0;i<100;i++){
    for(j=0;j<100;i++){
                  ^^^
      // 処理
    }
  }
例2
  for(i=0;i<100;i++){
    for(i=0;i<10;i++){
        ^^^^^^^^^^^^
      // 処理
    }
  }
余計なセミコロンが入っている
例3
  for(i=0;i<100;i++);{
   // 処理
  }
 Exception in thread "main" java.lang.NullPointerException at test.main(test.java:5)
簡単なデバッグ法は,いろいろなところに変数を表示する System.out.println文(本来の目的からはSystem.err.printlnの方が適当)を入 れることである.printlnは null も破綻せずに表示してくれる.
より高度なデバッグ法としては,
dell.tanaka.ecc.u-tokyo.ac.jp% javac -g test.javaのようにデバッグオプション付きでコンパイルしておいて,デバッガ jdb 上 でプログラムを動かすこともできる.
dell.tanaka.ecc.u-tokyo.ac.jp% jdb test jdb の初期化中です... > run test を実行します > VM が起動しました: test 例外が発生しました: java.lang.NullPointerException (キャッチされていません)"スレッド=main", test.main(), line=5 bci=12 5 soko.equals(null); main[1] where [1] test.main (test.java:5) main[1] print test.soko test.soko = nullただし,アプレットの場合はこの方法が使えないので注意が必要となる.
この課題の締切りは12/18(火) 21:00 に延長する.