Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何为类生成随机数?_Java_Arrays - Fatal编程技术网

Java 如何为类生成随机数?

Java 如何为类生成随机数?,java,arrays,Java,Arrays,我有点java新手,所以我要上java课。我正在做我当前的作业,要求我制作一个类来保存卡片类型(黑桃、钻石等)及其数字(1、2、3杰克等)的数据类型。我已经设法解决了这个问题,但是我被要求让全班随机生成这些数字,以便从牌堆中随机选择一张牌。下面是我的卡类的当前代码 public class Card { private int rank, suit; public Card(int rank, int suit) { this.rank = rank; //set methods

我有点java新手,所以我要上java课。我正在做我当前的作业,要求我制作一个类来保存卡片类型(黑桃、钻石等)及其数字(1、2、3杰克等)的数据类型。我已经设法解决了这个问题,但是我被要求让全班随机生成这些数字,以便从牌堆中随机选择一张牌。下面是我的卡类的当前代码

public class Card {
private int rank, suit;
public Card(int rank, int suit) {
    this.rank = rank; //set methods
    this.suit = suit;
}

public String toString(){
String[] suits = {null, "Clubs", "Diamonds", "Hearts", "Spades"}; //Null is never used, replaces 0
String[] ranks = {null, "Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"}; //Null is never used, replaces 0
String drawnCard = ranks[this.rank] + " of " + suits[this.suit];
return drawnCard;
}}

类TestCard是我目前拥有的,但是我试图用随机分配的值(排名1-4,适合1-13)替换里面的值。那么,如何从Card类中的数组生成一个随机值并在TestCard类中调用它呢?

下面是一段代码,让您开始:

public static void main(String[] args) {
    String[] suits = {null, "Clubs", "Diamonds", "Hearts", "Spades"}; //Null is never used, replaces 0
    String[] ranks = {null, "Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"}; //Null is never used, replaces 0

    Random random = new Random();
    String randomRank = ranks[random.nextInt(ranks.length)];
    String randomSuit = suits[random.nextInt(suits.length)];
    System.out.println(randomRank + " " + randomSuit);
}
示例输出:
6个俱乐部

如果不希望选取null:

String randomRank = ranks[random.nextInt(ranks.length - 1) + 1];
String randomSuit = suits[random.nextInt(suits.length - 1) + 1];
首先,将“null”作为数组中的第0个元素是不好的形式(在Java和所有其他0-index语言中)。您需要确信计数是从零开始的,因为在Java世界中遇到的所有其他代码都是基于这个假设的

String[] suits = {"Clubs", "Diamonds", "Hearts", "Spades"}; 
String[] ranks = {"Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"};
本质上,你的问题归结为产生一对随机数。第一个从0-4开始,包括0但不包括4,第二个从0-14开始,包括0但不包括14

幸运的是,Java提供了这样一个函数
Random.nextInt(int-bound)
。您可以按如下方式使用它:

Random r = new Random();
int suite = r.nextInt(4);
int rank  = r.nextInt(14);

您可以阅读该方法

您可以使用生成随机值。谢谢!我想我现在明白了java的GISP,并且可能把剩下的部分都算出来。你在那里用整型字段指向数组。。。这真的是穷人版的枚举。是的,我自己也看到了。编辑答案。是的,或者干脆去掉
null
条目。
Random r = new Random();
int suite = r.nextInt(4);
int rank  = r.nextInt(14);