Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用嵌套for/each循环创建具有不同特征的对象?_Java_Arrays_String_Object - Fatal编程技术网

Java 如何使用嵌套for/each循环创建具有不同特征的对象?

Java 如何使用嵌套for/each循环创建具有不同特征的对象?,java,arrays,string,object,Java,Arrays,String,Object,我正在尝试创建一副牌(基于布景游戏),其中有81张独特的牌。我试图通过使用三个广义for循环来实现这一点。现在,我有三个字符串数组,它们具有以下特征(形状、颜色、图案)。然而,在将println语句添加到循环中时,我发现只有一种类型的模式创建了红牌 ArrayList<Card> deck = new ArrayList<Card>(); static public Deck create() { Deck deck = new Deck(); Stri

我正在尝试创建一副牌(基于布景游戏),其中有81张独特的牌。我试图通过使用三个广义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;

}

现在,它应该用每个单独的图案和形状创建所有的形状。我完全不明白这一点,我将感谢任何帮助

删除代码中的
break
语句。break语句导致内部循环过早终止

我已经测试了你的代码,它生成了81张没有break语句的卡片。请参见此示例:


删除您的
中断部分。第一次执行后,您将结束内部for循环。

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

这里造成混乱的原因可能是,您在每次形状迭代中只打印一次
形状。如果您将
System.out.println
语句移动到最内部的循环中(就像我在ideone示例中所做的那样),这将更有意义。
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