【问题标题】:How can I use nested for/each loops to create objects with different features?如何使用嵌套的 for/each 循环来创建具有不同功能的对象?
【发布时间】:2014-11-24 06:03:21
【问题描述】:

我正在尝试创建一副包含 81 张独特卡片的卡片组(基于 SET 游戏)。我试图通过使用三个通用的 for 循环来实现这一点。现在,我有三个具有特征(形状、颜色、图案)的字符串数组。然而,在将println 语句添加到循环中后,我发现只有一种模式会创建红牌。

ArrayList<Card> deck = new ArrayList<Card>();

static public Deck create() {
    Deck deck = new Deck();
    String[] shapes = new String[] { "diamond", "squiggly", "oval",
            "double diamond", "double squiggly", "double oval",
            "triple diamond", "triple squiggly", "triple oval" };
    String[] colors = new String[] { "red", "green", "purple" };
    String[] patterns = new String[] { "stripes", "filled in", "outlined" };
    // Shapes
    for (String shape : shapes) {
        System.out.println(shape);
        // Colors
        for (String color : colors) {
            System.out.println(color);

            // Patterns
            for (String pattern : patterns) {
                System.out.println(pattern + "\n");
                Card card = new Card(shape, color, pattern);
                deck.deck.add(card);


                break;
            }
            break;
        }

    }
    return null;

}

这是输出:

diamond
red
stripes

squiggly
red
stripes

oval
red
stripes

double diamond
red
stripes

double squiggly
red
stripes

double oval
red
stripes

triple diamond
red
stripes

triple squiggly
red
stripes

triple oval
red
stripes

现在,它应该使用每个单独的图案和形状创建所有形状。我完全迷失了这一点,我将不胜感激!

【问题讨论】:

    标签: java arrays string object


    【解决方案1】:

    删除代码中的 break 语句。 break 语句会导致内部循环提前终止。

    我已经测试了您的代码,它生成了 81 张没有 break 语句的卡片。看这个例子:

    http://ideone.com/SVsXPi

    【讨论】:

    • 造成混乱的原因可能是您每次形状迭代只打印shape once。如果您将 System.out.println 语句移动到最内层循环中(就像我在 ideone-example 中所做的那样),它会更有意义。
    【解决方案2】:

    删除您的 break; 部分。您将在第一次执行后结束内部 for 循环。

    【讨论】:

      【解决方案3】:

      删除 break 语句,因为它们会在您设法迭代数据之前终止您的循环。

      【讨论】:

        猜你喜欢
        • 2018-10-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-22
        • 1970-01-01
        • 2014-03-20
        • 1970-01-01
        • 2023-03-18
        相关资源
        最近更新 更多