第二个循环没有被执行

时间:2014-03-16 22:11:14

标签: java

我有这个简单的程序,我试图输出一副牌中的所有牌。 但是它只输出每组1-9张卡,而不是面部卡。即只执行带有j的for循环,而不执行涉及f数组的for cardFace循环。这是为什么?

public class cards {

    public final String cardValue[] = {"Heart", "Diamond", "Spade", "Club"};
    public final String cardFace[] = {"Jack", "Queen", "King", "Ace"};

    public void outputCards() {

        for (int i = 0; i < cardValue.length; i++) {
            int k = 1;

            if (k <= 9) {
                for (int j = 1; j <= 9; j++) {
                    System.out.println("The Card is a " + j + " And is a " + cardValue[i]);
                    k++;
                }
            } else {
                for (int f = 10; f < cardFace.length; f++) {
                    System.out.println("The Card is a " + f + " And is a " + cardValue[i]);
                    k++;
                }
            }
        }
    }
}

2 个答案:

答案 0 :(得分:4)

 for(int i = 0; i <cardValue.length; i++){
        int k = 1;
        if(k <=9){
        ...

鉴于前面的代码,它将始终输入if而不输入else。因此,永远不会执行使用f变量的for。

答案 1 :(得分:1)

即使你的代码进入循环,它也永远不会运行,因为这种条件永远不会成立:

for(int f = 10; f < cardFace.length; f++){

如果你检查cardFace数组并获得它的长度,你会发现它总是小于f。

你的大部分逻辑都有点过时了。我建议您首先在纸上写出程序步骤,然后在尝试将其提交到代码之前考虑这些步骤,因为通常这些类型的错误都是在思考之前由编码引起的。