2013-12-08 47 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; 
}