我正在尝试启动一个程序,该程序将创建一个包含一副牌的所有可能值的数组。不完全确定他们最好的方法来解决这个问题,但我理性的是,我会创建一个带有套装和卡片值的静态数组。然后我创建了一个可更改的数组,以便我可以添加两个数组值,如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;的值。对不起,我是编程新手。有谁看到我做错了什么?
答案 0 :(得分:1)
创建一个具有两个属性的Card
类:
然后您可以使用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]);
}
}