如何快速快速循环内的多个变量?
How can I quickly quick multiple variables within a loop?
我需要创建 81 个不同的 JLabels
。简而言之,有没有办法在一个循环中创建 81 个具有单独名称等的变量?例如:
for(int i = 0; i <= 80; i++) {
JLabel i = new JLabel();
this.add(i);
}
这个returns错误:
sudokuSolver.java:26: error: variable i is already defined in constructor solveS
udoku()
JLabel i = new JLabel();
^
1 error
我在 Whosebug 上查看了类似的问题,例如使用 ArrayList
,但是,我找不到任何适合我的方法。
只需将 JLabel
重命名为其他名称,因为它与循环变量同名。
JLabel[] jLabels = new JLabel[81];
如果你想要这么多 JLabel,你可以这样做,
如果您只是想解决错误,请将变量重命名为 i
以外的名称
JLabel j = new JLabel();
在编程中,学习如何理解编译器错误消息很重要。
在这种情况下,它表示:
variable i is already defined
...而且它甚至指出了错误的位置。
您正在声明类型为 JLabel
的变量 i
。但是已经有一个类型为 i
的变量——您在 for
语句中声明的 int。
给您的 JLabel 变量一个不同的名称(jLabel
小写 j
是个好名字),错误消失了。
An identifier cannot have the same spelling (Unicode character sequence) as a keyword (§3.9), boolean literal (§3.10.3), or the null literal (§3.10.7), or a compile-time error occurs.
来自JLS 6.3. Scope of a Declaration
This program causes a compile-time error because the initialization of x is within the scope of the declaration of x as a local variable, and the local variable x does not yet have a value and cannot be used.
来自JLS 6.4 Shadowing and Obscuring
Because a declaration of an identifier as a local variable of a method, constructor, or initializer block must not appear within the scope of a parameter or local variable of the same name, a compile-time error occurs for the following program:
class Test1 {
public static void main(String[] args) {
int i;
for (int i = 0; i < 10; i++)
System.out.println(i);
}
}
因此在您的情况下:for 循环中的 int i
和 JLabel i
具有相同的拼写。
因此,只需更改其中任何一个的拼写即可,例如:
for(int i = 0; i <= 80; i++) {
JLabel yourLabel = new JLabel();
this.add(yourLabel);
}
Int i 已经为 outerloop 定义,而在循环内部您已经为类型 JLabel 声明了相同的变量名 i。外部内容对内部循环具有可见性,这使得编译器抛出错误消息 i is already defined。请将 to 重命名为其他名称以避免编译器错误。
我需要创建 81 个不同的 JLabels
。简而言之,有没有办法在一个循环中创建 81 个具有单独名称等的变量?例如:
for(int i = 0; i <= 80; i++) {
JLabel i = new JLabel();
this.add(i);
}
这个returns错误:
sudokuSolver.java:26: error: variable i is already defined in constructor solveS
udoku()
JLabel i = new JLabel();
^
1 error
我在 Whosebug 上查看了类似的问题,例如使用 ArrayList
,但是,我找不到任何适合我的方法。
只需将 JLabel
重命名为其他名称,因为它与循环变量同名。
JLabel[] jLabels = new JLabel[81];
如果你想要这么多 JLabel,你可以这样做,
如果您只是想解决错误,请将变量重命名为 i
JLabel j = new JLabel();
在编程中,学习如何理解编译器错误消息很重要。
在这种情况下,它表示:
variable i is already defined
...而且它甚至指出了错误的位置。
您正在声明类型为 JLabel
的变量 i
。但是已经有一个类型为 i
的变量——您在 for
语句中声明的 int。
给您的 JLabel 变量一个不同的名称(jLabel
小写 j
是个好名字),错误消失了。
An identifier cannot have the same spelling (Unicode character sequence) as a keyword (§3.9), boolean literal (§3.10.3), or the null literal (§3.10.7), or a compile-time error occurs.
来自JLS 6.3. Scope of a Declaration
This program causes a compile-time error because the initialization of x is within the scope of the declaration of x as a local variable, and the local variable x does not yet have a value and cannot be used.
来自JLS 6.4 Shadowing and Obscuring
Because a declaration of an identifier as a local variable of a method, constructor, or initializer block must not appear within the scope of a parameter or local variable of the same name, a compile-time error occurs for the following program:
class Test1 {
public static void main(String[] args) {
int i;
for (int i = 0; i < 10; i++)
System.out.println(i);
}
}
因此在您的情况下:for 循环中的 int i
和 JLabel i
具有相同的拼写。
因此,只需更改其中任何一个的拼写即可,例如:
for(int i = 0; i <= 80; i++) {
JLabel yourLabel = new JLabel();
this.add(yourLabel);
}
Int i 已经为 outerloop 定义,而在循环内部您已经为类型 JLabel 声明了相同的变量名 i。外部内容对内部循环具有可见性,这使得编译器抛出错误消息 i is already defined。请将 to 重命名为其他名称以避免编译器错误。