2015-04-29 56 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>);