我们有一个学校项目,我们正在创建一个基于文本的黑杰克游戏。我创建了不同的类,如BlackJackDeck,Card,Hand,Player和Dealer。我的老师希望我们有一个名为BlackJack的课程,游戏逻辑将是。我试图在BlackJack中创建一个main方法,并添加了一个引用我的BlackJackDeck套牌的方法。但它表示“无法从静态上下文中引用非静态变量长度”。如果我没有主方法,我的程序将无法运行。这是我的代码:
package blackjack;
import java.util.ArrayList;
/**
* @version 1.0
* @author robert.englund
*/
public class BlackJack {
ArrayList<Spelare> spelare = new ArrayList<>(); //List with players
BlackJackKortlek leken = new BlackJackKortlek(4); //BlackJackDeck
Dealer dealer = new Dealer(); //The dealer
public static void main(String[] args) {
leken.blanda(); //Shuffle deck
}
}
我该怎么做才能让游戏可以运行以便我可以编写游戏逻辑? 提前谢谢!
答案 0 :(得分:0)
您应该实例化BlackJackKortlek leken = new BlackJackKortlek(4);
发布您的main()
方法。完成后,您可以调用方法。
答案 1 :(得分:0)
您无法从静态上下文访问非静态变量。
您的变量(非静态)超出main
方法(静态)
声明您的变量如下:
static ArrayList<Spelare> spelare = new ArrayList<>();
static BlackJackKortlek leken = new BlackJackKortlek(4);
static Dealer dealer = new Dealer();
或在main
内声明:
public static void main(String[] args) {
ArrayList<Spelare> spelare = new ArrayList<>(); //List with players
BlackJackKortlek leken = new BlackJackKortlek(4); //BlackJackDeck
Dealer dealer = new Dealer();
}
答案 2 :(得分:0)
你可以简单地将leken声明为静态变量。
private static BlackJackKortlek leken = new BlackJackKortlek(4);
此外,您应该阅读static关键字的实际含义。
答案 3 :(得分:0)
您正试图在静态方法中访问非静态变量leken
,这是您不应该做的,只有当您创建时,instance variables
的原因才会出现在图片中可以在不创建对象的情况下访问static
方法的对象。
public static void main(String[] args) {
leken.blanda(); // leken is non-static variable.
}
因此,在main方法中创建对象。
public static void main(String[] args) {
BlackJackKortlek leken = new BlackJackKortlek(4); //BlackJackDeck
leken.blanda(); // leken is non-static variable.
}