输出的差异-Java
我的代码中没有出现错误消息。 然而,当我在main中键入代码和调用方法时,我会得到不同的输出输出的差异-Java,java,Java,我的代码中没有出现错误消息。 然而,当我在main中键入代码和调用方法时,我会得到不同的输出 package card; import java.util.Arrays; import java.util.Random; /** * */ public class Card { /** * @param args the command line arguments */ static String rank; static String
package card;
import java.util.Arrays;
import java.util.Random;
/**
*
*/
public class Card {
/**
* @param args the command line arguments
*/
static String rank;
static String suit;
static String[] ranks = {"2","3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"};
static String[] suits = {"Spades","Hearts", "Clubs", "Diamonds"};
static Card[] deck = new Card[52];
public Card(String rank, String suit)
{
this.rank = rank;
this.suit = suit;
}
public static String getRank()
{
return rank;
}
public static void setRank(String r)
{
rank = r;
}
public static String getSuit()
{
return suit;
}
public static void setSuit(String s)
{
suit = s;
}
public static void init(Card[] deck)
{
for(int x = 0; x<deck.length; x++)
{
Card newCard = new Card(ranks[x%13], suits[x/13]);
deck[x] = newCard;
}
}
public static void swap(Card[] deck, int a, int b)
{
Card temp = deck[a];
deck[a] = deck[b];
deck[b] = temp;
}
public static void shuffle(Card[] deck)
{
Random rnd = new Random();
for(int x = 0; x<deck.length; x++)
{
swap(deck, x, (rnd.nextInt(deck.length)));
}
}
public static void print(Card[] deck)
{
for(int x =0; x<deck.length; x++)
{
System.out.println(deck[x].getRank() + " of " + deck[x].getSuit());
}
}
public static void main(String[] args) {
// TODO code application logic here
for(int x = 0; x<deck.length; x++)
{
Card cards = new Card(ranks[x%13], suits[x/13]);
deck[x] = cards;
System.out.println(deck[x].getRank() + " of " + deck[x].getSuit());
//init(deck);
//print(deck);
}
}
}
但是当我调用这些方法时,我得到以下输出:
A of Diamonds
A of Diamonds
A of Diamonds
A of Diamonds
A of Diamonds
怎么了?您的以下静态成员
static String rank;
static String suit;
不应是静态的,因为每张卡应具有不同的值:
String rank;
String suit;
您的以下静态成员
static String rank;
static String suit;
不应是静态的,因为每张卡应具有不同的值:
String rank;
String suit;
“当我调用这些方法”是什么意思?在不运行
main
方法的情况下如何运行它们?当我调用方法例如:init(),print()时,您是否尝试使用调试器来找出发生了什么?什么是“当我调用方法时”?在不运行main
方法的情况下如何运行它们?当我调用方法例如:init(),print()时,您是否尝试使用调试器来找出发生了什么?谢谢。根据我的理解,static不是指属于该类的属性吗?@Aloysius static意味着该类的所有实例共享静态变量的一个实例。因此,在您的情况下,所有卡实例都具有相同的等级
和适合
。哦,就像在变量值中一样,不会改变。我说的对吗?@Aloysius每当你给它赋值时,它都会改变,但每次你改变它,所有卡片实例都会看到这种改变。谢谢。根据我的理解,static不是指属于该类的属性吗?@Aloysius static意味着该类的所有实例共享静态变量的一个实例。因此,在您的情况下,所有卡实例都具有相同的等级
和适合
。哦,就像在变量值中一样,不会改变。我说的对吗?@Aloysius每当你给它赋值时,它都会改变,但每次你改变它时,所有卡实例都会看到这种改变。