【问题标题】:Error when running code through command line通过命令行运行代码时出错
【发布时间】:2014-03-15 16:09:40
【问题描述】:

我有这个代码:

public class PlayGame
{

public static void main(String[] args)
{
    PlayGame p = new PlayGame();
    p.startup();
}


PlayGame p = new PlayGame();
GameLogic g = new GameLogic();

(格式正确)。启动类只有一些我知道可以正常工作的代码。它只是打印出来的东西。但是在运行时我会遇到很多错误

at PlayGame.<init>(PlayGame.java:13)

这重复了很多次,是我在命令行中看到的唯一内容。 我通过插入找到了

System.exit(0)

在出现错误之前要退出的行间是在

PlayGame p = new PlayGame();

线。我不知道为什么会如此感谢任何帮助。谢谢

【问题讨论】:

  • 你遇到了什么错误?
  • 不要从您的问题中删除该行。人们不会知道错误来自哪里。

标签: java init


【解决方案1】:

PlayGame 类有一个实例字段

PlayGame p = new PlayGame();

所以每个PlayGame 对象都会创建一个PlayGame 对象,这会创建一个PlayGame 对象,令人作呕。

StackOverflowError 最终会耗尽内存。

为什么在PlayGame 的实例中需要PlayGame 的实例?

【讨论】:

  • 谢谢,我原来是这样的。我现在已经在静态 void main(String[] args) 之外删除了 PlayGame。里面的一次就是启动方法。是否需要,或者我也可以删除那个吗?
  • @pokeairguy 理想情况下(关注点分离),您可以在其他一些专用类中使用您的 main 方法。
  • @Soltirios Delimanolis 我总共有 3 个链接在一起的类。 playGame 是第一个链接到其他 2 的。所以我有 main 方法来启动它
  • @pokeairguy 它会正常工作。但是,请阅读separation of concerns,这是软件设计中的一个重要模式。您的PlayGame 应该包含玩游戏的行为。 main 方法是 Java 应用程序的入口点。它与您的 PlayGame 课程无关。它可能应该是一个完全独立的类,用于启动您的应用程序。
  • @Soltirios Delimanolis 谢谢。这是一些课程作业,我相信这是我们被告知要布置它的方式。但是,错误仍在发生。请参阅我修改后的问题,了解我的代码现在的样子。我还在犯同样的错误吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-27
  • 1970-01-01
相关资源
最近更新 更多