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

时间:2015-04-10 08:57:48

标签: java for-loop jlabel

我需要创建81个不同的JLabels。简而言之,有没有办法在循环中创建具有单独名称等的81个变量?例如:

for(int i = 0; i <= 80; i++) {
    JLabel i = new JLabel();
    this.add(i);
}

这将返回错误:

sudokuSolver.java:26: error: variable i is already defined in constructor solveS
udoku()
      JLabel i = new JLabel();
             ^
1 error

我在StackOverflow上查看了类似的问题,例如使用ArrayList,但是,我找不到适合我的合适方法。

5 个答案:

答案 0 :(得分:3)

只需将您的JLabel重命名为其他内容,因为它与您的循环变量具有相同的名称。

答案 1 :(得分:2)

在编程中,学习如何理解编译器错误消息非常重要。

在这种情况下,它说:

variable i is already defined

......它甚至指向错误的位置。

您正在声明类型为i的变量JLabel。但是已经存在类型为i的变量 - 您在for语句中声明的int。

为您的JLabel变量指定一个不同的名称(jLabel,小写j是个好名字),错误就消失了。

答案 2 :(得分:2)

来自JLS 3.8. Identifiers

  

标识符不能与关键字(§3.9),布尔文字(§3.10.3)或空文字(§3.10.7)具有相同的拼写(Unicode字符序列),否则会发生编译时错误

来自JLS 6.3. Scope of a Declaration

  

此程序导致编译时错误,因为x的初始化在x声明作为局部变量的范围内,并且局部变量x尚未具有值且无法使用。

来自JLS 6.4 Shadowing and Obscuring

  

由于标识符声明为方法,构造函数或初始化程序块的局部变量,因此不能出现在同名参数或局部变量的范围内,因此以下程序会发生编译时错误:

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);
}

答案 3 :(得分:1)

JLabel[] jLabels = new JLabel[81];

如果你想要这么多JLabel,你可以这样做,

如果您只想解决错误,请将变量重命名为i以外的其他内容

   JLabel j = new JLabel();

答案 4 :(得分:0)

已经为外部循环定义了Int i,其中在循环内部,您已为类型JLabel声明了相同的变量名称i。外部内容具有内部循环的可见性,这使得编译器抛出已经定义的错误消息。请重命名为其他名称以避免编译错误。

相关问题