2013-12-08 46 views
1

我试图编写我的第一个Android应用程序的朋友,基本功能是显示随机引用三个字符中的一个单击按钮时。 (对不起,术语不好)Android - 不能解决变量

我遇到的问题是在用另一个随机生成的数字和if/else如果条件访问该数组后返回一个从数组中随机选择的引号。

我有一个包,我希望从主要活动访问使用

String quote = mDoctorWho.getDoctorQuote;

该包我的if/else如果在这里声明:

private Nine mNine = new Nine(); 
private Ten mTen = new Ten(); 
private Eleven mEleven = new Eleven(); 

public String getDoctorQuote() { 

    // Choose a Random number out of three values 
    Random randomGenerator = new Random(); 
    int randomNumber = randomGenerator.nextInt(3); 

    // Use that value to choose which of the Doctors to get a quote from 
    if (randomNumber == 0) { 
     // Quote from Nine 
     String quote = mNine.getQuote(); 
    } 
    else if (randomNumber == 1) { 
     // Quote from Ten 
     String quote = mTen.getQuote(); 
    } 
    else if (randomNumber == 2) { 
     // Quote from Eleven 
     String quote = mEleven.getQuote(); 
    } 
    else { 
     String quote = "Error"; 
    } 
    return quote; 
} 

的上面的最后一行,返回报价,是得到错误'报价不能解析为变量'的人。

mNine,mTen和mEleven是看起来像左右这一切几乎相同的包:

public String[] mElevenQuotes = { 
     "Quote here", 
     "Quote here", 
     "Quote here" }; 

public String getQuote() { 

    String quote = ""; 

    Random randomGenerator = new Random(); 
    int randomNumber = randomGenerator.nextInt(mElevenQuotes.length); 

    quote = mElevenQuotes[randomNumber]; 

    return quote; 
} 

(我去掉引号,这样他们就不会占用房间 - 我不知道是否这个代码包将是有用的或不)。

我找了一个解决方案,并试图找出范围的问题,但还没有找到修复。如何在选择一个随机字符后再将主要活动的报价返回给主要活动,然后从该字符中随机引用该报价?

回答

2

你声明quote如果块内可变。所以在街区之外不存在。做这样的事情

public String getDoctorQuote() { 

    String quote = ""; // declare the variable before 
    Random randomGenerator = new Random(); 
    int randomNumber = randomGenerator.nextInt(3); 

    // Use that value to choose which of the Doctors to get a quote from 
    if (randomNumber == 0) { 
     // Quote from Nine 
     quote = mNine.getQuote(); 
    } 
    else if (randomNumber == 1) { 
     // Quote from Ten 
     quote = mTen.getQuote(); 
    } 
    else if (randomNumber == 2) { 
     // Quote from Eleven 
     quote = mEleven.getQuote(); 
    } 
    else { 
     quote = "Error"; 
    } 
    return quote; 
}