【问题标题】:How to pass characters to a method/class as a string?如何将字符作为字符串传递给方法/类?
【发布时间】:2019-04-03 23:40:40
【问题描述】:

我正在尝试编写最终将成为更大的 boggle 程序的一部分的类。我的一个类 - Tile - 存储显示的字母、它在板上的行和列,以及一个标志,以指示玩家是否选择了该瓷砖。 我在存储这封信时遇到了问题。

最初,我将字母存储为 char —— 当创建新的 Tile 对象时,将 char 传递给构造函数。但是,我还需要能够存储“Qu”。这让我相信 Tile 的构造函数需要接受字母作为字符串;但是,当我创建一个新的 Tile 对象并为其传递一个字符时,它不起作用。

例如:

Tile t1 = new Tile ('d', 0, 0);

Tile t2 = new Tile ("Qu", 0, 1);

这两个都需要工作。但我不确定如何存储字母(作为字符?字符串?)

【问题讨论】:

    标签: java string class parameters


    【解决方案1】:

    如果您需要支持多个角色,那么您需要String 是对的。但是,String 不需要包含多个字符。这是完全可以接受的:

    Tile t1 = new Tile("d", 0, 0);
    

    我会注意到,磁贴的位置并不是真正的固有属性,而像Tile[4][4] 这样的东西总体上对于跟踪位置可能更有意义。

    更新:根据其他信息,听起来写得不好的作业需要两者兼而有之。在这种特定情况下,使用多个构造函数,如下所示:

    public Tile(char value, int x, int y) {
        this(Character.toString(value), x, y);
    }
    

    【讨论】:

    • 有道理。我唯一担心的是我得到了一个驱动程序,其中一些 Tile 对象是使用字符创建的(例如 new Tile('d', 0, 0)),而使用 Qu 创建的对象是使用字符串创建的(new Tile("qu ", 0, 1))。也许驱动程序有问题?或者我应该能够同时接受字符或字符串吗?例如,在驱动程序中,Tile 对象是一个 ArrayList,并且存在以下代码:tiles.add(new Tile("qu",0,0)); tiles.add(new Tile('i',0,1)); tiles.add(new Tile('e',0,2)); tiles.add(new Tile('t',0,3));
    猜你喜欢
    • 2021-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-25
    • 1970-01-01
    • 2019-07-13
    • 1970-01-01
    • 2018-09-02
    相关资源
    最近更新 更多