如何快速快速循环内的多个变量?

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 是个好名字),错误消失了。

来自JLS 3.8. Identifiers

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 iJLabel 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 重命名为其他名称以避免编译器错误。