【问题标题】:Need Guidance on Parsing an Input in Java, Need to Specifically Use Classes, having a Hard time understanding Constructors需要在 Java 中解析输入的指导,需要专门使用类,很难理解构造函数
【发布时间】:2016-07-10 00:46:14
【问题描述】:

我要完成的作业如下;我不需要完整的答案,但任何形式的帮助或指导都会很好,因为我的教授正在回避我的问题。太感谢了!尽我所能掌握这些概念。 这是作业: 创建一个名为 PlayCards 的程序。这个类将使用另一个名为 Card 的类。将两个类放在同一个文件中,但将程序创建为“PlayCards”。

创建一个代表扑克牌的类(称为 Card)和另一个使用此类的类(称为 PlayCards)。

卡片将有两个字段:等级和花色。对等级和花色都使用整数。对于等级,使用值 2 到 10 来表示等级 2 到 10,11 代表杰克,12 代表皇后,13 代表国王,14 代表王牌。对于花色,梅花使用 0,方块使用 1,红心使用 2,黑桃使用 3。

只有 PlayCards 类有 main() 方法。此方法应读取“7-S K-H 2-H 4-C J-D”形式的参数。每个 arg 代表一张卡片。第一部分是等级,第二部分是花色。 C 代表梅花,D 代表方块,H 代表红心,S 代表黑桃。

对于每个 arg,您的程序必须解析 arg,创建一个表示卡片的 Card 对象。示例:

4 ♥ 国王♣ 2 ♠ 皇后♦ 10♣

要打印西装符号,请使用“♥”、“♣”、“♠”和“&diamonds;”

到目前为止,这是我的代码:

class PlayCards
{
    public static void main(String[] args)
    {
        Card c1 = new Card(17, 3);
    }
}
class Card
{
    private int Rank;
    private int Suit;

    public Card() {
        //Declaring of Object
    }

     public Card(int Rank, int Suit) {
        if (14 < Rank || Rank < 2) {
            System.out.println("Error: This Card does not exist.")
        }
        System.out.println("Hi from the Card Constructor. The Key to successful completion of this assignment.");
        this.Rank = Rank;
        this.Suit = Suit;
    }
}

** 我知道它很小,但这只是因为我废弃了我拥有的另一个文件以重新开始。我有一种方法可以用 If 语句检测字符的存在,但我很难过,因为它需要用 Objects 和一个额外的 Class 来完成。一如既往地感谢任何花时间帮助的人,这总是令人感激的! - 协同作用

【问题讨论】:

  • 你能改写吗?我不确定你的实际问题是什么
  • 我认为你的方法是正确的,只需要添加一个方法来获取参数并构建你的 Card 对象,向构造函数添加更多逻辑来验证花色和排名以及 List 保存您构建的四个对象。使用 toString of Card 打印输出
  • Koitoer,您介意扩展一下如何构建 Card 对象吗?比如我应该怎么做。我们在课堂上这样做是为了格式化日期,但在这方面,我很难理解如何在 Args 中获取字符串,并使其成为一个可供读取的 Int 等。我会在 costructor 中添加什么样的“逻辑”?

标签: java class parsing object


【解决方案1】:

对于任何 java 程序,main 方法是第一个被执行的线程。您可以将其视为代码的入口点。现在,在您的情况下,主要方法存在于 PlayCards 类中,因此它首先被执行。现在,此方法可以通过为其指定的参数与外部世界进行交互。这些参数通过名为 args 的字符串数组传递给代码。您可以看到它作为 main 方法的参数。

现在您可以单独访问每个参数,如 args[0]、args[1] 等。由于这些元素中的每一个都是一个字符串,因此您可以在它们之上执行内置的字符串操作。 split() 就是这样一种方法。字符串标记器就是这样一个类。你可以在 java docs 上阅读更多关于它们的信息。

将“7-H”等参数拆分为“7”和“H”后,您可以使用类似 parseInt() 的方法直接将 Integer 解析为字符串。同样,您应该在线阅读文档。现在您已将“7”转换为 7,您可以使用替换或其他方式将“H”替换为其等值数。

从这里对你来说应该很容易。

【讨论】:

  • 我必须提交作业的站点不允许使用 split(),我将如何“手动”执行此操作。
  • 嗯,您总是可以将字符串视为字符数组。 toCharArray() 可以是这样一种选择。既然您已经知道这些 char 数组元素中的每一个可以具有什么值,不妨尝试从这里解析。
  • 这个答案有帮助吗?
猜你喜欢
  • 1970-01-01
  • 2020-05-07
  • 1970-01-01
  • 2021-04-17
  • 2022-11-03
  • 1970-01-01
  • 2015-04-17
  • 1970-01-01
  • 2013-05-02
相关资源
最近更新 更多