1

それらの文字を含むボタンの配列を返すメソッドを作成したいと思います。メソッドを書きましたが、正確に何が起こるかわかりませんか?

public JButton [] button(){
    JButton [] button = null ;
    for(int i = 0 ;i<26 ;i++){
        String letter  = String.valueOf((char)(i + 'A'));
        button[i] = new JButton(letter);
    }
    return  button() ;
}
4

3 に答える 3

6

最初に次のように配列を作成します

JButton [] button = new JButton[26];  // see null is removed.

そしてちゃんと返す

return button; // removed paranthesis
于 2013-09-03T10:30:09.580 に答える
4

メソッドを再帰的かつ無期限に呼び出しています。

return button() ;

それは次のようになります。

return button;

メソッドや変数に紛らわしい名前を付けないようにするのが最善です。また、ボタン配列を適切に初期化する必要があります。

JButton[] button = new JButton[26];
于 2013-09-03T10:28:27.003 に答える
1

配列が初期化されていないため、NullPointerException が発生します。

JButton [] button = new JButton[26];

そして、 return ステートメントでメソッドを再度呼び出すと、無限ループが発生します。

return button; // removed paranthesis

これにより、ループで作成した配列が返されます。

コードは次のようになります。

public JButton [] button(){
    JButton [] button = new JButton[26];
    for(int i = 0 ;i<26 ;i++){
        String letter  = String.valueOf((char)(i + 'A'));
        buttons[i] = new JButton(letter);
    }
    return button;
}

コードが何をするかという質問に対して:

Aからまでの 1 文字でラベル付けされた JButton の配列を作成します。Z

于 2013-09-03T10:30:50.017 に答える