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谢谢,不知怎么的,我错过了。现在把它添加到了答案中。