Java 如何将代码从程序转换为类(getter和setter)

Java 如何将代码从程序转换为类(getter和setter),java,getter-setter,Java,Getter Setter,我正在尝试创建一个纸牌游戏,它将从不同的类中生成一张随机的纸牌。问题是专门用于随机卡的代码块很大。有没有办法将这部分代码传输到我的Card类,并在主程序中使用getter和setter?或者有没有办法使生成随机卡的代码更简单 主程序: String NewCard = ""; int theSuit, theRank; for(int i=0; i<1; i++) { theRank= (int)(Math.random()*13); theSuit = (int)(Math.rand

我正在尝试创建一个纸牌游戏,它将从不同的类中生成一张随机的纸牌。问题是专门用于随机卡的代码块很大。有没有办法将这部分代码传输到我的Card类,并在主程序中使用getter和setter?或者有没有办法使生成随机卡的代码更简单

主程序:

String NewCard = "";
int theSuit, theRank;

for(int i=0; i<1; i++) { 
theRank= (int)(Math.random()*13);
theSuit = (int)(Math.random()*5);

clsCard cardFace = new clsCard( theSuit, theRank);

NewCard =cardFace.toString();
System.out.println(" Your new card  is " + NewCard);

创建一个生成随机值的构造函数

 public clsCard() {
    this.rank= (int)(Math.random()*ranks.length);
    this.suit= (int)(Math.random()*suits.length);
}
在另一个类中创建
new clsCard()

您还可以使一些
公共静态列表generateCards(int-amount)
方法不污染主方法

那你就可以了

for (clsCard c : clsCard.generateCards(1)) {
    System.out.println(" Your new card  is " + c);
} 

创建一个生成随机值的构造函数

 public clsCard() {
    this.rank= (int)(Math.random()*ranks.length);
    this.suit= (int)(Math.random()*suits.length);
}
在另一个类中创建
new clsCard()

您还可以使一些
公共静态列表generateCards(int-amount)
方法不污染主方法

那你就可以了

for (clsCard c : clsCard.generateCards(1)) {
    System.out.println(" Your new card  is " + c);
} 

我可以想出两个选择:

您可以决定,不带参数的构造函数将随机生成值,使用它:

public clsCard() {
    this.suit = (int)(Math.random() * suits.length);
    this.rank = (int)(Math.random() * ranks.length);
}
但这似乎有点武断

您还可以在
clsCard
中创建一个
static
方法来生成随机实例

public static clsCard generateRandomCard() {
    return new clsCard((int)(Math.random() * suits.length), 
                       (int)(Math.random() * ranks.length));
}

顺便说一句,一个与你的问题无关的评论:你生成一张随机卡的方法并不是每张卡52张中就有1张(开玩笑的人会出现得更频繁)。如果这很重要,您可能需要考虑一下。

我可以想出两个选择:

您可以决定,不带参数的构造函数将随机生成值,使用它:

public clsCard() {
    this.suit = (int)(Math.random() * suits.length);
    this.rank = (int)(Math.random() * ranks.length);
}
但这似乎有点武断

您还可以在
clsCard
中创建一个
static
方法来生成随机实例

public static clsCard generateRandomCard() {
    return new clsCard((int)(Math.random() * suits.length), 
                       (int)(Math.random() * ranks.length));
}

顺便说一句,一个与你的问题无关的评论:你生成一张随机卡的方法并不是每张卡52张中就有1张(开玩笑的人会出现得更频繁)。如果这很重要,你可能会想一想。

人们告诉你给你的卡一个生成随机卡的构造函数,我不同意。如果这是你的目标,选择一张随机卡片,如果你的目标是让你的代码反映现实,那么为了正确地解决这个问题,你需要另一个类,一个
卡片组
类,一个包含卡片集合的类,可能是一个
列表
,它是一个
数组列表
。然后您可以通过调用
Collections.shuffle(cardList)来洗牌牌牌组(其集合)
,并通过调用其
.remove(0)
方法从ArrayList中提取洗牌卡,该方法从集合中移除第一张卡并返回

还要注意的是,这种类型的程序通常在如何使用枚举以及在何处使用枚举的教程中使用,因为卡的适合度和等级(或值)非常适合作为枚举。例如:

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class CardFun {
    public static void main(String[] args) {
        Deck deck = new Deck();
        for (int i = 0; i < 5; i++) {
            System.out.println(deck.deal());
        }
    }
}

类甲板{
private List cardList=new ArrayList();
公共甲板(){
再生();
}
最终公共无效重新生成(){
cardList=newarraylist();
for(Suit:Suit.values()){
对于(int i=1;i
人们告诉你给你的卡一个生成随机卡的构造函数,我不同意。如果这是你的目标,选择一张随机卡片,如果你的目标是让你的代码反映现实,那么为了正确地解决这个问题,你需要另一个类,一个
卡片组
类,一个包含卡片集合的类,可能是一个
列表
,它是一个
数组列表
。然后您可以通过调用
Collections.shuffle(cardList)来洗牌牌牌组(其集合)
,并通过调用其
.remove(0)
方法从ArrayList中提取洗牌卡,该方法从集合中移除第一张卡并返回

还要注意的是,这种类型的程序通常在如何使用枚举以及在何处使用枚举的教程中使用,因为卡的适合度和等级(或值)非常适合作为枚举。例如:

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class CardFun {
    public static void main(String[] args) {
        Deck deck = new Deck();
        for (int i = 0; i < 5; i++) {
            System.out.println(deck.deal());
        }
    }
}

类甲板{
private List cardList=new ArrayList();
公共甲板(){
再生();
}
最终公共无效重新生成(){
cardList=newarraylist();
for(Suit:Suit.values()){
对于(int i=1;i
java
!==<代码>javascript我不确定是否还有其他人,但我不清楚你到底在问什么。如果可能,请更具体地回答您的问题,包括显示您自己试图解决的任何问题。此
System.out.println(“您的新卡是”+NewCard)应该改为简单的
System.out.println(“您的新卡是”+cardFace)。println方法将自动调用对象的
toString()
方法。
java
!==<代码>javascript
我不确定是否还有其他人,但我不清楚你到底在问什么。如果可能,请更具体地回答您的问题,包括展示您自己试图解决的任何问题