2014-04-30 77 views
0

我是新的即時通訊Java,並試圖在函數結束時返回一個已定義的字符串變量,但eclipse一直說它不能解析爲一個變量,並希望我定義它。可能是因爲我在Try {}括號內定義了變量,但我還能怎麼做呢?試圖返回一個無法解析爲變量的變量

public class readtextfile extends AsyncTask<String, Integer, String>{ 

private TextView description; 
public readtextfile(TextView descriptionTextView){ 
    this.description = descriptionTextView; 
    } 

@Override 
protected String doInBackground(String... params) { 

    try { 

     URL url = new URL("http://example.com/description1.txt");  

     BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); 
     String line = null; 
     String result = ""; 
     while ((line = in.readLine()) != null) { 
      //get lines 
      result+=line; 
     } 
     in.close(); 

     } catch (MalformedURLException e) { 

      e.printStackTrace(); 
     } catch (IOException e) { 

      e.printStackTrace(); 
     } 
    return result; 

} 

protected void onProgressUpdate() { 
    //called when the background task makes any progress 
} 

    protected void onPreExecute() { 
    //called before doInBackground() is started 
} 

@Override 
protected void onPostExecute(String result) { 
    this.description.setText(result); 
} 
    } 

回答

1

移動局部變量聲明

String result = ""; 

到try塊之前。如果你在一個塊中定義了一個變量,那麼在該塊之外不可用。

或者,你可以移動到return result; try塊的結束,但隨後你必須在方法的末尾添加其他return語句,對於一個異常被拋出和被抓住的情況下。

或者你可以擺脫try塊,將異常處理移到其他地方,並讓任何異常拋出。

+0

不知道自己的Java,但從它的外觀來看,這可能是一個範圍問題,這就是解決方案。 – Josh

+0

是的,解決了,謝謝,但現在我試圖把字符串放入一個textview,但它是空的。 txt文件沒問題,我已經檢查過了,在代碼中它只是一個例子。 –

0
URL url = null; 
String result = ""; 

然後在你的嘗試中,catch塊。

try { 
    url = ....; 
    . 
    . 
    result = ....; 

在try塊外聲明該變量。