Java 这种方法到底发生了什么?

Java 这种方法到底发生了什么?,java,Java,我想创建一个方法,返回一个包含按钮字母的按钮数组。我写了这个方法,但我不确定到底发生了什么 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); } re

我想创建一个方法,返回一个包含按钮字母的按钮数组。我写了这个方法,但我不确定到底发生了什么

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() ;
}
publicjbutton[]按钮(){
JButton[]按钮=null;

对于(int i=0;i您正在递归地、无限期地调用该方法:

return button() ;
这应该是:

return button;
最好避免混淆命名方法和变量。此外,还需要正确初始化按钮数组:

JButton[] button = new JButton[26];

您正在以递归方式无限期调用该方法:

return button() ;
这应该是:

return button;
最好避免混淆命名方法和变量。此外,还需要正确初始化按钮数组:

JButton[] button = new JButton[26];

首先创建数组,如下所示

JButton [] button = new JButton[26];  // see null is removed.
并正确返回

return button; // removed paranthesis

首先创建数组,如下所示

JButton [] button = new JButton[26];  // see null is removed.
并正确返回

return button; // removed paranthesis

您将获得NullPointerException,因为您的数组未初始化:

JButton[]按钮=新的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;
}
publicjbutton[]按钮(){
JButton[]按钮=新JButton[26];

对于(int i=0;i您将得到一个NullPointerException,因为您的数组未初始化:

JButton[]按钮=新的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;
}
publicjbutton[]按钮(){
JButton[]按钮=新JButton[26];

对于(int i=0;i您再次调用函数(递归)。假设所有其他操作都正确,则执行
返回按钮;
您再次调用函数(递归)。假设所有操作都正确,则执行
返回按钮;
指令
按钮[i]=新的JButton(字母)
将导致NPE,或至少导致OutOfBoundException@Julien谢谢,不知怎的,我错过了。现在将它添加到答案中。说明
按钮[I]=new JButton(字母)
将导致NPE,或者至少是OutOfBoundException@Julien谢谢,不知怎么的,我错过了。现在把它添加到了答案中。