编程新手,java新手。我似乎了解类及其组件、方法等基本部分,但我不知道如何将它们组合在一起。例如,我正在按照教程并尝试编写一个类 Card ,它可以成为基于构造期间传递的 args 的任何卡片。
我的第一个问题是,如果我将类 Card 声明为 public(第 5 行),编译器会说非法的表达式开始。
如果我删除 public,它会继续 println 语句,它抱怨非静态变量不能从静态环境中引用。那是因为我在 main 方法中工作,它总是静态的,对吧?所以,我需要向 Card 添加方法来读取内部状态并将其提供给 println 语句,这样行吗?
public class Deck {
public static void main(String[] args) {
class Card {
public int rank;
public int suit;
public Card(int startSuit, int startRank) {
rank = startRank;
suit = startSuit;
}
}
Card aceOfSpades = new Card(1, 1);
System.out.println("Card is ..." + Card.rank + " of " + Card.suit);
}
}
第二轮 这是新代码,文件是 Card.java:
public class Card {
//declare states
//rank 1-13 for ace-king
//suit 1-4 spade,heart,club,diamond
public int rank;
public int suit;
//constructor
public Card(int startSuit, int startRank) {
rank = startRank;
suit = startSuit;
}
//methods for Card
public static void main(String[] args) {
//call Card constructor
//make card ace of spades (1,1)
Card aceOfSpades = new Card(1,1);
//read internal state of new Card object
//what kind of card is it?
System.out.println("Card is ..." + rank + " of " + suit);
}
}
我平衡了我的大括号,主要方法现在是 Card 类的一部分,我认为它看起来更好。oney 编译错误现在与 println 语句中的变量相关联。(不能从静态上下文中引用非静态变量套装。)我认为这意味着我必须编写 getSuit() 和 getRank() 之类的方法来读取变量状态,然后在我的 println 中使用该方法,而不是变量本身?
这种方法看起来像这样,对吧?
public int getSuit() {
return suit;
}
(请多多包涵,我的格式不完全正确,我会努力的)