Java 试图从数组中获取随机元素
我想做的是创建一个card类,通过随机生成一个值和一套衣服来随机生成一张卡。我不在乎它是否会产生4张完全相同的卡片,这对我来说并不重要。但下面是我认为我迄今为止最好的尝试。Java 试图从数组中获取随机元素,java,random,Java,Random,我想做的是创建一个card类,通过随机生成一个值和一套衣服来随机生成一张卡。我不在乎它是否会产生4张完全相同的卡片,这对我来说并不重要。但下面是我认为我迄今为止最好的尝试。 String[] PossCards = new String[]{"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A" }; String[] PossSuits = new String[]{"C", "S", "H", "D"}; Random
String[] PossCards = new String[]{"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A" };
String[] PossSuits = new String[]{"C", "S", "H", "D"};
Random rand = new Random();
public Card(){
String Card = PossCards[rand.nextInt(PossCards.length)];
String Suit = PossSuits[rand.nextInt(PossSuits.length)];
String ActCard = Suit + "" + Card;
}
但这不起作用,当我使用我的Hand类尝试创建4张随机卡时,返回的值为null。以上代码中有错误吗?或者这是我在手动类中一定弄错的东西吗?首先是java的命名约定-变量和方法使用小写字符 然后,您切换了卡片和西装的.length方法,因此您应该有:
String Suit = PossCards[rand.nextInt(PossCards.length)];
String Card = PossSuits[rand.nextInt(PossSuits.length)];
工作示例如下所示:不知道为什么您的示例不起作用-可能是您没有与我们共享的代码中的错误:
public class JavaApplication8 {
public static String[] possCards = new String[]{"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"};
public static String[] possSuits = new String[]{"C", "S", "H", "D"};
public static Random rand = new Random();
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
while (1<2){
System.out.println(card());
}
}
public static String card() {
String suit = possSuits[rand.nextInt(possSuits.length)];
String card = possCards[rand.nextInt(possCards.length)];
return suit + card;
}
}
您得到的是PossCards的长度作为possDom数的限制 你正在做:
String Suit = PossCards[rand.nextInt(PossSuits.length)];
String Card = PossSuits[rand.nextInt(PossCards.length)];
你应该这样做:
String Card = PossCards[rand.nextInt(PossCards.length)];
String Suit = PossSuits[rand.nextInt(PossSuits.length)];
请记住java命名约定。变量名应以小写字符开头。请发布SSCCE以再现错误。是否以某种方式存储ActCard值?如何打印结果,结果将为空?发布整个代码…我同意@ppeterka66。我想看看这是怎么打印出来的。我还想看看类声明。这并不能解决OP的问题。请注意,命名约定是一个建议,它不是答案的一部分。卡阵列仍然适用,但没有解释为什么为null如果变量switchero是问题所在,则会抛出IndexOutOfBoundsExceptions,而不是null值。Lol我是唯一一个回答的人,我复制了整个测试工作示例以及您给我的内容?从-2到-3,因为我用卡片交换了套装,这很好,但是在这个例子中,它实际上没有改变任何东西,只有两个字母代表卡片的顺序。这里令人伤心的是OP不能解释这个问题。是的,任何人都可以从这段代码中创建一个工作示例,虽然这不是什么好东西,但其他人要求的是展示这在他/她的环境中是如何不起作用的。但多亏了你,OP只需要复制/粘贴这段代码,而不必考虑与他/她的代码相比它为什么有效。