我不明白这一行是如何工作的:"System.out.println("\nCard: " + Deck.get(number).getValue() + " of " + Deck.get(number).getSuit() ) ;"
I don't understand how this line works: "System.out.println("\nCard: " + Deck.get(number).getValue() + " of " + Deck.get(number).getSuit() );"
下面的代码是我现在无法联系到的人与我分享的代码。我对数组列表、方法链以及几乎所有的编码仍然是个新手。我尝试将“Deck.get(number).getValue()”转换为“Deck.getValue()”和其他一些变体,但每次我这样做时代码似乎都会失败。有人可以解释那条特定的线以及为什么它只在链接时有效吗?
P.S.
- 向所有认为此 post 由于不够清晰而过于基础或乏味的人致歉。这是我第一次 posting,我就是我的用户名。
进口java.lang.Math;
导入 java.util.*;
publicclass卡片{
private String suit;
private String value;
public static void draw(){
int number = (int) (Math.random() * Deck.size());
System.out.println("\nCard: " + Deck.get(number).getValue() + " of " + Deck.get(number).getSuit() );
Deck.remove(number);
}
public static void count(){
System.out.println("\nCards left in the Deck: " + Deck.size());
}
public Card(String suit, String value){
this.suit = suit;
this.value = value;
}
static ArrayList<Card> Deck = new ArrayList<Card>(52);
public String getSuit(){
return suit;
}
public String getValue(){
return value;
}
public void setSuit(String suit){
this.suit = suit;
}
public void setValue(String value){
this.value = value;
}
public static void main (String[] args){
String[] Suits = {"Clubs", "Spades", "Hearts", "Diamonds"};
String[] Values = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
for(int i = 0; i < 4; i++){
for(int a = 0; a < 13; a++){
Card Card = new Card(Suits[i], Values[a]);
Deck.add(Card);
}
}
int choice;
do{
cls();
System.out.println(" -----------");
System.out.println("|1. Draw |");
System.out.println("|2. Count |");
System.out.println("|3. Exit |");
System.out.println(" -----------");
System.out.println("Choose an Action: ");
Scanner sc = new Scanner(System.in);
choice = sc.nextInt();
if (choice == 1)
{
draw();
}
else if (choice == 2)
{
count();
}
}while(choice!=3);
}
}
Cards
是您的 ArrayList<Deck>
的名称,这意味着有一个“套牌”列表(实际上只是单张牌)。如果您尝试执行类似 Cards.getValue()
的操作,代码并不知道您指的是列表中的哪张卡片。链 Cards.get(index)
的额外步骤在列表中的指定位置获取特定卡,然后您可以对其调用 getValue()
以获取该卡的值。
您的代码有点混乱,因为它并不能真正准确地表示一副纸牌的运作方式。为了更清楚,当前名为 Cards
的列表应该称为 Deck
(因为一副纸牌本质上是多张纸牌的列表),而您的 Deck
class 应该被命名为 Card
,因为它需要一个花色和点数,每张牌都是独一无二的。
这样,您就会得到 List<Card> deck = new ArrayList<Card>();
之类的东西。正确命名变量确实有助于理解代码中发生的事情。
下面的代码是我现在无法联系到的人与我分享的代码。我对数组列表、方法链以及几乎所有的编码仍然是个新手。我尝试将“Deck.get(number).getValue()”转换为“Deck.getValue()”和其他一些变体,但每次我这样做时代码似乎都会失败。有人可以解释那条特定的线以及为什么它只在链接时有效吗?
P.S.
- 向所有认为此 post 由于不够清晰而过于基础或乏味的人致歉。这是我第一次 posting,我就是我的用户名。
进口java.lang.Math; 导入 java.util.*;
publicclass卡片{
private String suit;
private String value;
public static void draw(){
int number = (int) (Math.random() * Deck.size());
System.out.println("\nCard: " + Deck.get(number).getValue() + " of " + Deck.get(number).getSuit() );
Deck.remove(number);
}
public static void count(){
System.out.println("\nCards left in the Deck: " + Deck.size());
}
public Card(String suit, String value){
this.suit = suit;
this.value = value;
}
static ArrayList<Card> Deck = new ArrayList<Card>(52);
public String getSuit(){
return suit;
}
public String getValue(){
return value;
}
public void setSuit(String suit){
this.suit = suit;
}
public void setValue(String value){
this.value = value;
}
public static void main (String[] args){
String[] Suits = {"Clubs", "Spades", "Hearts", "Diamonds"};
String[] Values = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
for(int i = 0; i < 4; i++){
for(int a = 0; a < 13; a++){
Card Card = new Card(Suits[i], Values[a]);
Deck.add(Card);
}
}
int choice;
do{
cls();
System.out.println(" -----------");
System.out.println("|1. Draw |");
System.out.println("|2. Count |");
System.out.println("|3. Exit |");
System.out.println(" -----------");
System.out.println("Choose an Action: ");
Scanner sc = new Scanner(System.in);
choice = sc.nextInt();
if (choice == 1)
{
draw();
}
else if (choice == 2)
{
count();
}
}while(choice!=3);
}
}
Cards
是您的 ArrayList<Deck>
的名称,这意味着有一个“套牌”列表(实际上只是单张牌)。如果您尝试执行类似 Cards.getValue()
的操作,代码并不知道您指的是列表中的哪张卡片。链 Cards.get(index)
的额外步骤在列表中的指定位置获取特定卡,然后您可以对其调用 getValue()
以获取该卡的值。
您的代码有点混乱,因为它并不能真正准确地表示一副纸牌的运作方式。为了更清楚,当前名为 Cards
的列表应该称为 Deck
(因为一副纸牌本质上是多张纸牌的列表),而您的 Deck
class 应该被命名为 Card
,因为它需要一个花色和点数,每张牌都是独一无二的。
这样,您就会得到 List<Card> deck = new ArrayList<Card>();
之类的东西。正确命名变量确实有助于理解代码中发生的事情。