1

forループを使用して、クラスファイルからString配列に名前を取得し、JOptionPaneリストメニューに表示しようとしています。ただし、私はに直面していますが、配列を としてNullPointerException宣言しないと、コンパイラは文句を言います。Stringnull

public void showWindow()
{
    String[] theNames = null;

    for(int i=0; i<person.length; i++)
    {
        if(person[i] != null)
        {
            System.out.println(person[i].name);
        }
    }

    String s = (String)JOptionPane.showInputDialog(null, "Select your name and click on confirm", "Results", JOptionPane.PLAIN_MESSAGE, null, theNames, "Eric");
}

オプション値を 1 つずつリストせずに、この問題を解決するにはどうすればよいですか?

4

2 に答える 2

0

オプションは任意のオブジェクトの配列にすることができますが、 toString() メソッドがプルダウン メニューに表示したいものであることを確認してください。オプションを 1 つずつリストする必要はなく、オブジェクトを文字列に変換する必要さえありません。例えば:

public class Person {

  String firstName, lastName;

  public Faculty(String f, String last) {
     firstName = f;
     lastName = last;
  } 

  public String toString() {
     return firstName + " " + lastName;
  }  
}

public static void showWindow()  {
  Person[] guys= new Person[5];
  guys[0] = new Person("Dick","Wall");
  guys[1] = new Person("Tor","Norbye");
  guys[2] = new Person("Chet","Haase");
  guys[3] = new Person("Carl","Quinn");
  guys[4] = new Person("Scott","Hanselman");

  Personp = (Person) JOptionPane.showInputDialog(null, 
     "Pick your favorite podcaster.", 
     "Java Posse",
     JOptionPane.QUESTION_MESSAGE, null, 
     guys, guys[0]); 

  System.out.println("You picked:" + p.toString());
}
于 2013-03-15T19:32:56.327 に答える
0

そのコード行に問題はありません:

String [] theNames = null;  
      String s=(String)javax.swing.JOptionPane.showInputDialog(null, "Select your name and click on confirm","Results",
              javax.swing.JOptionPane.PLAIN_MESSAGE, null, theNames, "Eric");
      System.out.println(s);

注:theNamesを取得しない限り、イニシャルを入力する必要がありますRuntimeException

クラスに Person 変数があることに気付きました。theNames を null として初期化する理由を説明できますか? メソッドの利点は何ですか?

于 2013-03-15T19:02:22.323 に答える