创建卡片阵列[Java]

时间:2015-10-31 19:31:04

标签: java arrays

我正在尝试启动一个程序,该程序将创建一个包含一副牌的所有可能值的数组。不完全确定他们最好的方法来解决这个问题,但我理性的是,我会创建一个带有套装和卡片值的静态数组。然后我创建了一个可更改的数组,以便我可以添加两个数组值,如deck.add(suit[suitNumber] + value[valueNumber]);。我使用for循环来自动化该过程。

import java.util.ArrayList;
import java.util.Arrays;


public class arrayTest {

public static void main(String[] args) {
    // TODO Auto-generated method stub

    String[] suit = {"D, H, S, C"};
    String[] value = {"A, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K"};
    int suitNumber = 0;
    int valueNumber = 0;
    ArrayList<String> deck = new ArrayList<String>();

    for (suitNumber = 0; suitNumber == suit.length; suitNumber++) {
        if (suitNumber == 3) {
            suitNumber = 0;
        }
        if (valueNumber == 13) {
            valueNumber = 0;
        }
        deck.add(suit[suitNumber] + value[valueNumber]);

    }
    System.out.print(deck);
}

}

当我在这个阶段运行程序时,除了&#34; []&#34;在控制台中。调试部分还显示了deck数组有10个&#34; null&#34;的值。对不起,我是编程新手。有谁看到我做错了什么?

4 个答案:

答案 0 :(得分:1)

创建一个具有两个属性的Card类:

  1. 套装
  2. 然后您可以使用ArrayList来保存Card对象:

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

    您还需要一个双循环来将每张卡加载到ArrayList:

    for (int suitNumber = 0; suitNumber < suit.length; suitNumber++)
    {
        for (int valueNumber = 0; valueNumber < value.length; valueNumber++
        {
                deck.add(new Card(suit[suitNumber], value[valueNumber]);
        }
    }
    

答案 1 :(得分:1)

for(suitNumber = 0; suitNumber == suit.length; suitNumber ++)

你在这里尝试什么?

suitNumber == suit.length;即0 == 4这总是假的,你的循环不会执行。

答案 2 :(得分:1)

  String[] suit = "H,D,C,S".split(",");
  String[] vals = "A,2,3,4,5,6,7,8,9,10,J,Q,K".split(",");

  List<String> deck = new ArrayList<String>();
  for(String s:suit)
     for(String v:vals)
        deck.add(s + v);
  System.out.println(deck);

当然可以用数据做你想做的事。创建卡片类或其他东西。

答案 3 :(得分:0)

这里:

 for (suitNumber = 0; suitNumber == suit.length; suitNumber++)

应该是

for (suitNumber = 0; suitNumber <= suit.length; suitNumber++)

你忘记增加valueNumber

这不是一个好方法,我应该这样做:

 for (valueNumber= 0; valueNumber<= value.length; valueNumber++){
    for (suitNumber = 0; suitNumber <= suit.length; suitNumber++){
       deck.add(suit[suitNumber] + value[valueNumber]);
    }
 }