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

我如何为一个甲板类写一个函数到String方法[duplicate]

季小云
2023-03-14

基本上,我有这个toString方法,它显示已排序的卡片。本质上,如果我有一副完整的牌,这就是输出的样子。

{Ace of Clubs | Two of Clubs | Three of Clubs | Four of Clubs | Five of Clubs | Six of Clubs | Seven of Clubs | Eight of Clubs | Nine of Clubs | Ten of Clubs | Jack of Clubs | Queen of Clubs | King of Clubs | Ace of Diamonds | Two of Diamonds | Three of Diamonds | Four of Diamonds | Five of Diamonds | Six of Diamonds | Seven of Diamonds | Eight of Diamonds | Nine of Diamonds | Ten of Diamonds | Jack of Diamonds | Queen of Diamonds | King of Diamonds | Ace of Hearts | Two of Hearts | Three of Hearts | Four of Hearts | Five of Hearts | Six of Hearts | Seven of Hearts | Eight of Hearts | Nine of Hearts | Ten of Hearts | Jack of Hearts | Queen of Hearts | King of Hearts | Ace of Spades | Two of Spades | Three of Spades | Four of Spades | Five of Spades | Six of Spades | Seven of Spades | Eight of Spades | Nine of Spades | Ten of Spades | Jack of Spades | Queen of Spades | King of Spades}

目前,我已经通过一个简单的循环来完成这一操作,在开始处放置一个花括号,并循环显示deck中有多少个元素,添加deck.get(I).getCard()+“”的输出。最后从结尾减去三个字符,再加上一个花括号。但这不是一个很好的解决方案,是一个非常程序化的解决方案,我喜欢优雅的解决方案,我认为有一些函数可以为这种目的服务,但我不知道lambda表达式或其他任何一个,所以我想知道是否有人可以教我如何做到这一点。在下面你会找到我目前的解决方案。任何帮助都是感激的干杯!

public String toString(){
        Collections.sort(deck);

        String result = "{";
        for(int i = 0; i < deck.size(); i++){
            result += deck.get(i).getCard() + " | ";
        }

        if(deck.size() == 0){
            return "{}";
        }

        result = result.substring(0, result.length() - 3);
        result += "}";

        shuffle();
        return result;
    } 

共有1个答案

安轶
2023-03-14

根据MadProgammer的建议,我尝试了一些StringJoiner(我不知道它的存在)。

下面是一种方法:

List<String> deck = new ArrayList<>();
deck.add("Ace of Clubs");
deck.add("Two of Clubs");
deck.add("Three of Clubs");

StringJoiner stringJoiner = new StringJoiner("|", "{", "}");
for (String card : deck) {
  stringJoiner.add(card);
}
System.out.println(stringJoiner.toString());

这给出了输出:

{Ace of Clubs|Two of Clubs|Three of Clubs}

话虽如此,但我不知道为什么要在toString方法中进行洗牌,因为这样做没有意义?如果它是打印的,就像Maarten建议的那样创建一个副本。

 类似资料:
  • 我有一个4类的代码,甲板,卡,玩家和测试。 我的想法是创建一个21点游戏,玩家有你的“手”与甲板上提供的卡。我的代码工作正常,但是我只想要一个方法返回两个不同的数组。 我的代码简历: 牌:一张牌(价值,花色) 套牌:创建一个包含 52 张牌的牌阵列。一个类的方法提供Cards()来获取玩家的卡。 玩家:一类有牌阵列的“手牌” 问题在哪里? 看“Deck”类,我使用了2个方法,provideCard

  • 本文向大家介绍写一个方法判断一个数字是否为整数相关面试题,主要包含被问及写一个方法判断一个数字是否为整数时的应答技巧和注意事项,需要的朋友参考一下

  • 问题内容: 在Python中,该类充当所有(新样式)类的根超类。至少默认情况下,将和应用于的任何子类的“类实例”会产生相同的结果: 我想定义一个的子类,例如,它在每种方式上都是相同的,除了对自身和产生不同的输出: 有没有办法在Python中做到这一点? PS:我知道特殊的方法,但是据我了解,如果类重写,则仅当在的实例上调用时才调用覆盖方法,而不是在自身上调用时。即: 问题答案: 实际上,与对象实例

  • 我做这个任务已经有一段时间了;很好的1-2天,我想我第一节课上的一切都是正确的,那是我为Java制作的。作业要我做的是在第一节课中进行方法和计算,然后在第二节课中调用它。我做了第二个类,我试图让用户输入购买物品的数量,然后它会显示出来 购买的金额 我做了;在第二个类中,扫描仪用来保存输入的数字量,以及一个系统。出来用户将要购买的金额的println。但是我如何从另一个类调用这个方法呢?我试过以下方

  • 我有抽象类动物,然后我有像狗和猫这样的类,并且扩展了类动物。 我想确保父类动物的所有子类都有一个静态方法:getProperties。即使其他人无权访问我的代码,也可以实现一个新的动物子类。 我希望它是静态的,因为Dog类的所有Animals都具有完全相同的属性(或者您不需要Dog来了解Dog的一般外观),因此它是在classtype上调用的方法,而不是类实例。 这可能吗?

  • 问题内容: 所以我基本上想做的很简单 由于某种原因,它无法正常工作。在我的Javascript控制台(Chrome浏览器)中 编辑1:我已经添加了实际的代码,如您所见,我在构造函数中绑定了validateEmail 问题答案: 您的方法已正确定义,因此问题出在如何 调用上 。 您以一种设置为实例以外的方式调用它。这在事件侦听器中很常见。我想您的代码中有一些类似的代码: React 的推荐解决方案是