当前位置: 首页 > 知识库问答 >
问题:

带扫描器的抽象类

夏侯宏旷
2023-03-14

我正在为一个CS项目做一个游戏,其中一个要求是只有一个扫描仪为人类输入。如果我创建一个抽象类“Player”,它有一个扫描器对象,并创建两个扩展“Player”的“人类”类,它们是各自有自己的扫描器,还是共享“Player”扫描器?另外,当我结束游戏时如何关闭扫描仪?

共有1个答案

邵飞宇
2023-03-14

根据您的评论和问题,我知道您创建了一个player抽象类和两个具体的human类。你实际上只想有一个扫描仪。

在这种情况下,应该使player中的scanner字段为静态。这样,您只有扫描程序的一个实例。你也许应该加一个吸气剂。让我给你看代码:

public abstract class Player {
    private static Scanner scanner = new Scanner (System.in);

    public static Scanner getScanner () {
        return scanner;
    }
}

如果要关闭扫描仪,只需调用close:

Player.getScanner().close();

我不明白的另一件事是,为什么要创建抽象类?下面是我的建议:将player作为一个具体的类,只需创建两个player对象来表示这两个player。我看到很多人都会犯这个错误。初学者通常喜欢创建类而不是对象。继承的意思是“是一种”。另一方面,创建对象可以解释为“是一个”。所以在你的情况下,人类是一个玩家,除非你想让计算机也玩。

 类似资料:
  • 我试图使用Jenkins、FxCop和Sonarqube分析一个C#项目。目前,我使用的构建步骤是“用于MSBuild-Begin Analysis的Sonarqube Scanner”、“FxCop Exec.”、“使用MSBuild构建Visual Studio项目或解决方案”和“用于MSBuild-End Analysis的Sonarqube Scanner”。当FxCop和SonarQub

  • 当我尝试使用javac在windows命令提示符中编译程序时,我得到以下错误消息: 我做错了什么?

  • 但是在输入序列之后,我们必须键入一个非整数字符并按“Enter”来终止扫描程序并执行“for”循环。有没有什么方法我们不必键入一个非整数字符来终止扫描仪?

  • 问题内容: 我真的试图通过线程找到答案,但仍然希望能得到一些反馈。 我认为下面的代码风格不好,但是我不知道为什么在输入数字后会把我射杀 ,因为我为两个方法创建了两个Scanner对象,并且我应该能够开始一个新的输入。而且,如果我删除了inputAndPrintNumber()中的内容,它将正常工作并正确编译。我真的希望知道如果我仍然使用两个Scanner obj并且不删除(如果可能的话)为什么以及

  • 我有一个类,它创建多个对象,并将它们放入中,如下所示: 我有一个应用程序,它从控制台扫描输入“add”,如果找到,就调用方法,如下所示: 应用程序应该允许用户输入“add”,但在调用方法后,将出现错误“no line found”。 我猜这是因为方法中的没有关闭,然后在需要时重新打开。这是程序的问题吗?如果是,我该如何修复它? 请注意,这个程序还没有完成,因为我将添加一个出售这些股票的销售方法。这

  • 您可以通过Burp 控制台(Burp Dashboard)上的新的扫描(New scan)按钮或是 Burp 中出现的菜单中的Scan选项来启动扫描。利用这些方法可打开扫描启动窗口,然后您可以使用它配置扫描中的各种详细参数。 扫描细节 扫描启动界面的详细的扫描信息(Scan details)部分允许您选择扫描类型,配置要扫描的内容等等信息。 扫描类型 您可以选择以下扫描类型: 抓取并审计(Craw