示波器程序

1.語法正確,但是圖片不能顯示,還提示IO異常—>打開res文件夾刷新,摺疊後再刷新,重啓Eclipse。軟件問題

2.drawString語法錯誤—>drawString中不能使用VCENTRE錨點

3.在方法體裏面定義的變量出現修飾錯誤—>方法體內定義的變量不能存在: private  protected    public    static (因爲定義訪問修飾符都是爲了控制訪問的,既然是方法體,在方法體內定義這些有用嗎?

4.方法中不可以再套用方法,但可以調用方法

5.重寫Canvas中的keypressed方法—>一定是public的(該方法是protect)

6.在使用高級界面和低級界面轉換時,高級界面實現輸入時不必繼承Screen,只需要繼承Form就可以了

7.繼承Form類時出現(Implicit super constructor Form() is undefined. Must explicitly invoke another constructor錯誤)—>

   這是因爲Form類已經有構造函數了,在想重新寫個構造函數,必須使用super調用父類的構造方法

8.TextBox初始化時也可以—>private TextBox inputName=null;  

9.如果想把一個類中的數傳到另一個類中去,可以:

                         在類中定義一個方法   

                                     public short getData(int value)

                                      {           

                                                    return (short)0;

                                      }

10. 把字符串轉換成int,使用value=Integer.parseInt(tb.getString());   

                                  不是value=       Int.parseInt(tb.getString());

 

11.Canvas類中按鍵keypressed事件無反應—>Canvas的事件和CommandListener衝突,被CommandListener給攔截了。canvas類一般不用CommandLisentener

12.Canvas類中按鍵keypressed事件無反應—>keyPressed方法的拼寫錯誤,中間的P寫成小寫的p了!!!

13.使用上下左右鍵判斷時應注意轉換遊戲鍵—>利用函數:

                               protected  void keyRepeated(int keyCode) {

                                          int action = this.getGameAction(keyCode);

                                          if (action==Canvas.FIRE){

                                           ……………………

                                           }

                                         }

   

14.使用上下左右鍵判斷時應注意轉換遊戲鍵—>或者直接用keyCode數值來判斷(上下左右數值分別是-1  -2  -3  -4)

                                       protected  void keyRepeated(int keyCode) {

                                           if (keyCode==-1){

                                           ……………………

                                           }

                                         }

 

15.System.out.println(" ");函數只能在類的方法中調用

16.構造函數沒有返回值

17.利用建立一個方法來傳遞參數時:aa.getNumber();  aa初始化時不能這樣: aa=null;   必須實例化aa纔可以用aa.getNumber();

    否則就會出現NullPointerException異常!!!

18.在InputScreen(繼承textbox)類中定義了一個空的tb,以便使用textbox方法tb.getstring();結果出現NullPointerException異常!!! (這是因爲tb爲空,必須實例化tb)—>最好的辦法是使用 this.getstring();

19. 定義變量是有順序的  比如:

                                                public MainOsci mo; 
                                                private InputScreen is=new InputScreen(mo);  正確

                                        ————————————————————————————————————————

                                                private InputScreen is=new InputScreen(mo);

                                                public MainOsci mo;                                            錯誤

 

20.通過手機鍵盤輸入的數字“1~9”存儲在字符char中,char對應的值不是ASCII碼(用char-32),而是keycode值(char-48)

21.出現“Cannot make a static reference to the non-static method getValue(int) from the type ADConverter 可是我的程序裏面根本就沒有靜態方法和靜態變量啊,爲什麼啊?????”的原因:http://topic.csdn.net/u/20100325/18/ba8e00dd-8295-4e7c-b30a-7cf08573bdb5.html

 

22.使用線程時要使用死循環,否則線程只使用一次就結束了,線程不起作用     

23.(int)Math.sin3的值爲0—>因爲int不能表示小數!!!

24.導出文件時出現“Resource is out of sync with the file system”問題—>查閱資料後發現這是文件系統不同步的問題,是因爲在eclipse之外對工程中的resource進行修改引起的——> 解決辦法:需要手動刷新一下資源管理器       

25.導出的jar文件在安裝時顯示“應用程序文件錯誤(jar)”——> MANIFEST 文件沒有設置主類,解決方法:MANIFEST文件中包含以下信息:

                 Manifest-Version: 1.0
                 MIDlet-Vendor: Midlet Suite Vendor
                 MIDlet-Version: 1.0.0
                 MicroEdition-Configuration: CLDC-1.1
                 MIDlet-Name: YZG Midlet Suite
                 MicroEdition-Profile: MIDP-2.0
                 MIDlet-1: oscilloscope.MainOsci                     //設置主類   MIDlet-1:(空格)主類名,,包名.主類名(回車)

26.導出的jar文件在運行時顯示“爪哇程序結束”——>主類沒設置好——>只寫了:包名.主類名(沒寫,,前面的主類名)

 

27.程序在電腦上能運行,打包成jar在手機上不能運行(去掉if等語句就可以)——>軟件問題,打包沒打好——>最好的辦法是去workspace/工程名/.mtj.tmp/emulation文件下就有打包好的jar,肯定好使!!!

 

28.輸入界面的TextBox自己調人輸入鍵盤,按確認鍵後,確認的是輸入完畢,不是TextBox中的確認,自己定義TextBox中的確認被攔截了

 

29.多線程的使用格式:

不是:     class A implements Runnable{

                           th1.stat();

                       run(){

                          ………………

                            }

 是:     class A {

                           th1.stat();

                       class B implements Runnable{

                         run(){

                          ………………

                            }

                        }

 

30.在方法裏面定義的變量顯示“沒有定義”如果把類移動到獨立的文件中就不顯示了——>因爲在方法裏的變量不能訪問同一個文件下定義的類(既:該方法外面的class)——>解決:把變量移到最外層(構造函數之上)。

31.定義的class線程在使用th.Start()時,顯示“The method start() is undefined”,而用extend 就不出現這種錯誤——>利用Runnable接口時,還需要額外的一步(相對於extends thread),需要實例化一個對象,使用該對象作爲實例化Thread對象的參數,然後使用Thread類中的start() 方法啓動線程——> PrintRunnable pr = new PrintRunnable();  Thread th1 = new Thread(pr); th1.start();

32.在字符轉換時要進行異常處理,否則不能轉換時將出錯“java.lang.NumberFormatException

33.類的定義class void  A() extends Tread{}  ×

34.repaint()函數不是清空畫布之後重畫!!!——>而是直接在原有的基礎上接着畫

35.出現“IllegalThreadStateException”異常——>thread.start()方法只能調用一次,被多次調用拋出異常。做個判斷,只允許執行一次,或者放在只被執行一次的地方,如構造  http://topic.csdn.net/u/20100402/20/0bc1cafc-06ce-4586-9435-9baebf19124f.html

 

36.停止線程的方法——>在線程中寫一個標記,if(Flag){return;}

37.手機的座標與笛卡爾座標不一樣,Y軸上負下正,並且改變不了

38.明明是一條畫線語句卻畫出了兩條線——> 如果線太長了,屏幕畫不下時,畫不下的部分補償到(平移)至上面

39.用循環語句 g.drawLine(x, -value, x+1,-nextValue) 畫線時只能畫第一條線,從第二條線就不畫在屏幕上了——>我在畫背景圖片時加入了一個threadStopFlag 讓線程停止的標誌,結果調用畫背景方法時線程停止了!!! 誤加入的,不知道爲什麼加上那句話,去掉就沒問題了……

40.構造函數在第一次new的時候就開始執行,且按照裏面的調用語句開始在後臺運行整個類,但是該類中的某些方法卻不可以執行(比如paint()方法只有在canvas爲當前界面時纔可以執行,它不能在後臺運行,雖然構造函數裏有repaint(),但卻不運行paint()

41.畫線時有時出兩條線,有時不按照你定的位置畫線——>使用了g.translate(x,y)語句,座標多次變換,換迷糊你!!!——>最好的辦法是變換一次在使用完後再變換回來g.translate(-x,-y)

42.g.translate(x,y)語句在遇到重畫repaint()時座標變換重回原點

43.canvas類使用特別注意的問題:canvas裏面的命令大部分用的數據都是int類——>比如:int screenWidth/2 的值將會四捨五入!!!所以在畫多條線時會與你畫的有出入(由於四捨五入問題引起的)——>解決辦法:利用座標變換g.translate(x,y);從0點開始畫就不會錯了,不要從一個定值開始畫(有誤差)……

44.把else後面的一條語句放在{}中,顯示聲明else錯誤。原因:語句後面少了一個“;”

45.J2ME標籤裏不可以定義變量

46.

 

 

 

 

 

發佈了16 篇原創文章 · 獲贊 5 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章