2012-04-29 16 views
0

"name"という変数が作業フォルダの別のクラスに格納されています。私はそれをJOptionPaneからのユーザ入力と比較したいと思います。私が持っているコードはこれです:私はプログラムをコンパイルするとIfステートメント内の文字列の比較

String userInput = JOptionPane.showInputDialog(null, "What is the value?"); 
if(name.equals(userInput)){JOptionPane.showMessageDialog(null, "You are correct.");} 

、それはシンボル「名前」を見つけることができないというエラーをスローします。変数をユーザー入力と比較するために変数を別の方法で呼び出す必要がありますか、まったく間違っていますか?

答えて

0

は、2つのクラス以下のいる作業フォルダに言うことができます。フィールドがstaticの場合は、newを使用してオブジェクトを作成する必要はありません。クラス名を使用するだけです。

1

nameが別のオブジェクトのメンバーである場合は、どのオブジェクトを指定する必要があります。あなたが別のクラスのフィールドにアクセスする方法

class IHaveNameVariable 
{ 
    String name; 
} 

class IAccessNameVariable 
{ 
    public void someMethod() 
    { 
     // Uncomment the code below 
     // and it will compile. 

     // IHaveNameVariable aRef = new IHaveNameVariable(); 

     String userInput = JOptionPane.showInputDialog(null, "What is the value?"); 
     if(/*aRef.*/name.equals(userInput)) 
     { 
      JOptionPane.showMessageDialog(null, "You are correct."); 
     } 
    } 
} 

ので、それはです:

thingWithAName.name.equals(userInput) 
+0

推奨スタイルは、直接名前を取得するのではなく、「アクセサ」メソッドを使用することです。例えば'if(thingWithAName.getName()。equals(userInput))//ここで何かする' – user949300