【问题标题】:Adding a cycle numbre to the name of an object在对象名称中添加循环编号
【发布时间】:2013-04-18 01:22:05
【问题描述】:

我在 Java 中有这段代码

for (int j = 0; j < 8; j++) 
        {
            Boton[1][j].setIcon(PeonN);
            Peon PeonNegro = new Peon('N');
            Boton[6][j].setIcon(PeonB);
        }

这是针对国际象棋的,我希望每个新对象都具有循环的编号,以便在不创建数组的情况下独立使用它,以拥有类似

for (int j = 0; j < 8; j++) 
            {
                Boton[1][j].setIcon(PeonN);
                Peon PeonNegro+i = new Peon('N');
                Boton[6][j].setIcon(PeonB);
            }

所以我会有 PeonNegro0、PeonNegro1 等等......

【问题讨论】:

    标签: java arrays object cycle


    【解决方案1】:

    如果没有数组或Collection,您将无法做到这一点。 (在 Java 中,很难使用动态变量名)。您必须在 for 循环之外声明数组或 ArrayList 之类的内容,如下所示。

    Peon[] peons = new Peon[8];
    for (int j = 0; j < 8; j++) 
    {
        Boton[1][j].setIcon(PeonN);
        peons[j] = new Peon('N');
        Boton[6][j].setIcon(PeonB);
    }
    
    // So we can access a single peon like this
    Peon p3 = peons[3];
    
    // Or iterate over all peons and get the cycle number like this
    for (int cycle_num = 0; cycle_num < 8; cycle_num++) {
        Peon peon = peons[cycle_num];
    
        // Do something with peon and cycle_num here
    
    }
    

    【讨论】:

    • 谢谢,我只是想知道是否可以在没有数组的情况下做到这一点,我想我必须用普通的方式来做:P
    • 是的,这很常见。祝你好运!
    【解决方案2】:

    这不是 JAVA 的工作方式。如果您想要一个连续的变量列表,您的选择是使用数组或Collection 对象之一。变量不能动态命名。

    此外,值得注意的是,由于您在 for 循环中声明了该变量,因此该变量只能在循环的下一次迭代之前访问。也就是说,你甚至不能在循环之外使用变量,所以没有理由给它们编号。

    【讨论】:

    • 这正是我想要的,创建它们然后逐个操作它们
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 2012-05-09
    • 2020-07-18
    • 2021-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多