2015-04-29 55 views
-1

我在FourActivity類做出了這樣的功能:空指針exeception處理

public int getRandomNumber(){ 
    Random rnd=new Random(); 
    int randomNumber=rnd.nextInt(100); 


    if (randomNumber%2==1){ 
     randomNumber=randomNumber+1; 
     return randomNumber; 

    } 

    else return randomNumber; 
} 

我試圖通過這樣的方式在另一個類要訪問此方法。但它拋出一個java.lang.NullPointerException

int randomNumber; 
FourActivity fourActivity; 
randomNumber= fourActivity.getRandomNumber(); 

Toast.makeText(FinalActivity.this,"Random Number is"+randomNumber ,Toast.LENGTH_SHORT).show(); 
+1

post logcat .... –

+0

簡單的建議。當你得到一個空指針時,像這樣,在出現異常之前放置一個調試標記,遍歷每一行並查看它是否爲空。 – raxelsson

+0

在你的班級初始化四個活動。即FourActivity fourActivity = new FourActivity(); –

回答

1

fourActivity不會被實例化,這就是爲什麼你會得到一個NullPointerException

如果這確實是一個活動,你不應該使用它那樣,而不是創建和使用一個靜態方法:

FourActivity.getRandomNumber(); 
1

你只是忘記否則,創造的FourActivity

實例方法應該是static像以下

public static int getRandomNumber(){ 
    Random rnd=new Random(); 
    int randomNumber=rnd.nextInt(100); 


    if (randomNumber%2==1){ 
     randomNumber=randomNumber+1; 
     return randomNumber; 

    } 

    else return randomNumber; 
} 

&調用它作爲

int randomNumber; 
randomNumber= fourActivity.getRandomNumber(); 
0

,因爲你沒有instantiatefourActivity

FourActivity fourActivity = new FourActivity(); 

,但如果你的函數是靜態的,你可以使用這樣的:

FourActivity.getRandomNumber(); 
+0

謝謝你錯誤被刪除。現在解決一個新問題。假設我已經生成了一個隨機數是50,我想在Integer中存儲它的一半。我正在通過這種方式:public int getAnswer(int randomNumber){return int answer = randomNumber/2; }但答案是錯誤的。爲什麼這個???? – user3537259

+0

@ user3537259這不是問題,它是一個簡單的錯誤,我認爲你最好調試你的代碼,而不是要求別人把你的問題指向你:) – Lrrr

+0

@ user3537259如果這能解決你的問題不要忘記以[標記爲答案](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) – Lrrr

1

讓它

int randomNumber; 
FourActivity fourActivity = new FourActivity(); 
randomNumber= fourActivity.getRandomNumber(); 

Toast.makeText(FinalActivity.this,"Random Number is"+randomNumber ,Toast.LENGTH_SHORT).show(); 
0

創建FourActivit的實例你班上的

FourActivity fourActivity; 
fourActivity = new FourActivity (<your context>);