2016-11-30 7 views
0

変数を宣言してクラスを宣言しようとしていますので、変数を使用する際に常に宣言する必要はありません。私が行ったので、私はプログラムを実行するまでエラーは出ません。私のコードは以下の通りです:解決方法 - java.lang.IllegalArgumentException:テキストをnullまたは空にすることはできません

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 

私はnullまたは空にすることはできませんテキストstrを言っていると信じています。どうすれば解決できますか? strには実行中のテキストが既に含まれているので、なぜこのエラーが発生しているのかわかりません。

+0

実行時にstrにテキストがありません。あなたはその変数を初期化していません。 'String str;' – amicoderozer

+0

あなたの例は実行可能ではありません。あなたはクリティカルラインをどこに呼びますか?より多くの情報を提供できますか? –

答えて

1

あなたはUIクラスを持っていて、ここのすべての変数はデータメンバーです... ここで問題はstrと思われます。これはヌルなので、urサービスは不平を言っています。 データメンバーはコンストラクタの前に初期化されるため、プロファイルが設定されているときはur strはnullです。 クラスのメンバーを宣言し、コンストラクタでそれらを初期化するか、strに行番号6に有効な初期値を与えます。

0

この行では、新しい変数strを定義します。これは、デフォルトではnullです:

String str; 

に思える、this.strstrは異なる変数であることを。

メソッドを呼び出すときにその行を削除し、this.strを使用します。

+0

申し訳ありませんが、私はそれを行い、変数strを見つけることができないと言います。 –

+0

ポイントは、snippedコードが有効なjava/androidアプリケーションコードではないということです。 UIメソッド以外のコード:他のメソッドで実行されていますか?どのクラスに? –

+0

コードが更新されました。同じクラスにいくつかのメソッドがあります。 –

0

問題をよりよく理解するために、特に例外がスローされた時点で、スタックトレース全体をポストする必要があります。 OKああ、私はちょうど コンポーネントからSTRを読んだ後、あなたはクラスではなく、直接、コンストラクタに

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

を初期化するべきではありませんあなたのコード:)

にコメントを見

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 
関連する問題