如何修复在Java中打印一副卡片时出现的错误?

如何修复在Java中打印一副卡片时出现的错误?,java,arrays,loops,Java,Arrays,Loops,我的任务是制作一副卡片,并以多种方式打印出来。但我遇到了一个问题,结果是52张牌乘以4。可能在用套装数组声明我的卡obj时出现了一些问题,但我不知道如何修复它。有人能帮忙吗 所以基本上我制作了一个Card类,它包含了Card的值/或等级、西装和脸(打印在卡片上的内容)。然后是一个甲板类,它创建了52张牌的数组,并添加了一个洗牌方法。目标是在洗牌前后打印卡片 问题是在Deck类中,我对其构造函数的循环似乎很奇怪,它打印出x4结果。我试着搬了一些,但没用 public Deck() { fo

我的任务是制作一副卡片,并以多种方式打印出来。但我遇到了一个问题,结果是52张牌乘以4。可能在用套装数组声明我的卡obj时出现了一些问题,但我不知道如何修复它。有人能帮忙吗

所以基本上我制作了一个Card类,它包含了Card的值/或等级、西装和脸(打印在卡片上的内容)。然后是一个甲板类,它创建了52张牌的数组,并添加了一个洗牌方法。目标是在洗牌前后打印卡片

问题是在Deck类中,我对其构造函数的循环似乎很奇怪,它打印出x4结果。我试着搬了一些,但没用

public Deck() {
    for (int i = 0; i<c.length;i++) {
        for (int j =0; j<suit.length;j++) {
            for (int k =0; k<face.length;k++) {
                s = suit[j];
                f = face[k];
                switch(f) {
                    case "2": v=2; break;
                    case "3": v=3; break;
                    case "4": v=4; break;
                    case "5": v=5; break;
                    case "6": v=6; break;
                    case "7": v=7; break;
                    case "8": v=8; break;
                    case "9": v=9; break;
                    case "10": v=10; break;
                    case "Queen": v=11; break;
                    case "Jack": v=11; break;
                    case "King": v=11; break;
                    case "Ace": v=12; break;
                }
                c[i] = new Card(v,s,f);
                System.out.println(c[i].toString());
            }
        }
    }            
}
公共甲板(){

对于(int i=0;i您正在实例化一张新的
实例
face.length*suit.length*c.length
次。为什么要迭代
c
数组?如果要创建每张卡中的一张并将其存储在
c
中,请执行以下操作:

int i = 0;
for (var suit : suits)
    for (var face : faces)
        c[i++] = new Card(suit, face);

一切都很好,只是您的
初始化新卡的位置不对

像这样:

public Deck() {
    for (int i = 0; i<c.length;i++) {
        for (int j =0; j<suit.length;j++) {
            for (int k =0; k<face.length;k++) {
                s = suit[j];
                f = face[k];
                switch(f) {
                    case "2": v=2; break;
                    case "3": v=3; break;
                    case "4": v=4; break;
                    case "5": v=5; break;
                    case "6": v=6; break;
                    case "7": v=7; break;
                    case "8": v=8; break;
                    case "9": v=9; break;
                    case "10": v=10; break;
                    case "Queen": v=11; break;
                    case "Jack": v=11; break;
                    case "King": v=11; break;
                    case "Ace": v=12; break;
                }
            }
        }
        c[i] = new Card(Integer.pareInt(s),s,f);
        System.out.println(c[i].toString());
    }            
}
公共甲板(){

对于(int i=0;iYou应该在您的问题中添加相关的语言标记。亲爱的down投票者,我的解决方案出了什么问题?这样我就可以解决它了。嗨,我忘了复制它的上半部分,认为这些行足够了lol,我已经声明了变量v,所以parseInt不是该变量(我尝试了tho,但ye不起作用)。我的输出再次显示了52张卡片,但有些是如何x4它们的,可能是套装,但Idk我如何才能正确订购。哦,我也忘了复制它,c是Card类的数组实例-或者是一副牌,52张cardsOkay的长度是52,但是如果您试图创建52张卡片实例,没有理由迭代该数组。