就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center为指导。
8年前关闭。
编程新手,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;
}
(请耐心等待,我的格式不完全正确,我会努力解决的)
最佳答案
搬家类Card
出方法体 main()
.所有这些代码都应该在一个与外部类同名的文件中,Deck.java
.
关于java - 主要方法和类,在哪里声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16123410/