2016-11-30 1091 views
0

我想在類的頂部聲明變量,所以我不必在使用它們時經常聲明它們。我已經這樣做了,直到我想運行該程序時纔出現錯誤。我的代碼如下:如何解決 - java.lang.IllegalArgumentException:文本不能爲空或空

public class UI extends javax.swing.JFrame { 

/** 
* Creates new form UI 
*/ 
public UI() {  
    initComponents(); 
    this.service.setUsernameAndPassword("9a1d5de6-7c2b-427d-a574-d6fe097c86b9", "ztil6GSHwd34"); 
    this.str = txtInput.getText(); 


} 
String str; 
PersonalityInsights service = new PersonalityInsights(); 
ArrayList<Double> percentagesList = new ArrayList();   
Profile profile = service.getProfile(str).execute(); 
Gson gson = new Gson(); 
Root C = gson.fromJson(profile.toString(), Root.class); 
Root.SubTree t = C.getSubTree(); //Gets subtree from root  
ArrayList<Children> c = t.getChildren(); //Gets <Children> from Root.getSubTree 

錯誤

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: text cannot be null or empty 

我相信這是說文字str不能爲null或空。我該如何解決這個問題? str在運行時已經有文本,因此不確定爲什麼會發生此錯誤。

+0

str在運行時沒有文本。你沒有初始化那個變量。 'String str;' – amicoderozer

+0

你的例子不可執行。你在哪裏叫關鍵線?你能提供更多信息嗎? –

回答

1

所以你有一個UI類和所有的變量在這裏是數據成員... 這裏的問題似乎是空的,因此你的服務抱怨。 數據成員在構造函數之前初始化,因此當設置配置文件時,ur str爲空。 我會在類中聲明成員,並在構造函數中初始化它們,或者在第6行給str一個有效的初始值。

0

用這行定義一個新的變量str。這是空默認:

String str; 

看來,這this.strstr是不同的變量。

刪除該行並在調用該方法時使用this.str

+0

對不起,我已經這樣做了,並且說找不到變量str。 –

+0

重點是,你的代碼被剪掉不是有效的java/android應用程序代碼。 UI方法之外的代碼:是否在其他方法中執行?在哪個級別? –

+0

代碼已經更新,在同一個類中有幾個方法使用它。 –

0

您應該發佈整個堆棧跟蹤以更好地理解問題,特別是在何時引發異常? 啊好,我剛纔看到你的代碼:)

評論你不應該在課堂上,而是直接在構造函數初始化

Profile profile = service.getProfile(str).execute(); 

從 組件閱讀STR後

public UI() { 
    txtInput.setText("TEXT"); 
    profile = service.getProfile(str).execute(); 
    Root C = gson.fromJson(profile.toString(), Root.class); 
    Root.SubTree t = C.getSubTree(); //Gets subtree from root  
    ArrayList<Children> c = t.getChildren(); //Gets <Children> from Root.getSubTree 
相關問題