Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从数组创建toString_Java_Arrays_Tostring - Fatal编程技术网

Java 从数组创建toString

Java 从数组创建toString,java,arrays,tostring,Java,Arrays,Tostring,我正在尝试创建一个toString来打印数组的细节。我可以通过执行for循环并在toString中使用print line with,让它以我希望的方式打印出来,但是当我想在代码的主要部分使用它时,它显然不起作用 对于上下文,这是我的卡片: /** * Constructor for the card. If damageDone and mana are negative they are replaced by 1 * (not the best solution but the g

我正在尝试创建一个toString来打印数组的细节。我可以通过执行for循环并在toString中使用print line with,让它以我希望的方式打印出来,但是当我想在代码的主要部分使用它时,它显然不起作用

对于上下文,这是我的卡片:

/** 
 * Constructor for the card. If damageDone and mana are negative they are replaced by 1 
 * (not the best solution but the good enough until we cover exception handling later in the 
 * semester). <br>
 * My solution length: 8 lines
 * @param manaCost - The amount of mana this spell costs to cast
 * @param damageDone - The amount of damage done by this card
 * @param name  - the name of this card
 */

public Card(int manaCost, int damageDone, java.lang.String name) {
    if (damageDone < 0) {
        this.damageDone = 1;}
    else {this.damageDone = damageDone;}
    if (manaCost < 0) {
        this.manaCost = 1;}
    else {this.manaCost = manaCost;}
    this.name = name;}
/**
*卡的构造函数。如果伤害完成和法力值为负,则替换为1
*(不是最好的解决方案,但已经足够好了,直到我们在本章后面介绍异常处理
*学期)
*我的解决方案长度:8行 *@param manaCost-此法术所需的法力值 *@param damageDone-此卡造成的伤害量 *@param name-此卡的名称 */ 公共卡(int manaCost、int damageDone、java.lang.String名称){ 如果(损坏程度<0){ this.damageDone=1;} else{this.damageDone=damageDone;} 如果(成本<0){ this.manaCost=1;} else{this.manaCost=manaCost;} this.name=name;}
这是我的例子,这段代码按照我想要的样子工作,但实际上没有带来任何结果:

public java.lang.String toString(){
    int count = 0;
    for (int index = 0; index < card.length; index++) {
        count++; 
        System.out.println(count + ": " + card[index]); 
    }
    return "";}
public java.lang.String toString(){
整数计数=0;
对于(int index=0;index
所以我试图构建一个string方法,但它没有带来任何结果,我很困惑。有人知道我哪里出错了吗

@Override
public java.lang.String toString(){
    String output = "";
    for (int index = 0; index < card.length; index++) {
        output = output + card[index];
    }
    return output;}
@覆盖
public java.lang.String-toString()文件{
字符串输出=”;
对于(int index=0;index
下面是我正在学习的全部课程,我在其他方面仍有问题:

public class Deck {

    private Card[] card = new Card[100];

private int cardsRunning = 100;
static int DECKSIZE = 100;
static java.lang.String emailID = "MITNY013";
private boolean random = true;



/**
 * Constructor for the Deck. Adds the following cards to the deck in the following order
 * 4x Super Lucky Strike, Damage 100, Mana 2 
 * 6x Mega Santa Hit, Damage 80, Mana 2
 * 10x Critical Hit, Damage 50, Mana 5
 * 10x Massive Strike, Damage 40, Mana 7
 * 15x Wrong Way Down A One Way Street, Damage 30, Mana 10
 * 15x Bender Rules Here, Damage 15, Mana 10
 * 40x Trade, Damage 5, Mana 5 <br>
 * My solution length: 16 lines (space lines not included)
 * @param random - Whether to turn on random features
 */

public Deck(boolean random) {
    for (int index = 0; index <= 3; index++) {
        card[index] = new Card( 2, 100, "Lucky Strike");
    }
    for (int index = 4; index <= 10; index++) {
        card[index] = new Card( 2, 80, "Santa Hit");
    }
    for (int index = 11; index <= 20; index++) {
        card[index] = new Card( 5, 50, "Critical Hit");
    }
    for (int index = 21; index <= 30; index++) {
        card[index] = new Card ( 7, 40, "Massive Strike");
    }
    for (int index = 31; index <= 45; index++) {
        card[index] = new Card( 10, 30, "Wrong Way Down A One Way Street");
    }
    for (int index = 46; index <= 60; index++) {
        card[index] = new Card( 10, 15, "Bender Rules Here");
    } 
    for (int index = 61; index <= 99; index++) {
        card[index] = new Card( 5, 5, "Trade");
    } 
}

/**
 * Returns a string representation of the entire deck in the format
 * Deck [ 1:Card [name=Super Lucky Strike, manaCost=2, damageDone=100]
 *        2:Card [name=Super Lucky Strike, manaCost=2, damageDone=100]
 *        3:Card [name=Super Lucky Strike, manaCost=2, damageDone=100]
 *        4:Card [name=Super Lucky Strike, manaCost=2, damageDone=100]] <br>
 * My solution length: 7 lines
 * @overrides - toString in class java.lang.Object
 */

@Override
public java.lang.String toString(){
    String output = "";
    for (int index = 0; index < card.length; index++) {
        output = output + card[index];
    }
    return output;}



/**
 * Uses a random number generator to get a card from the deck somewhere then swaps the 
 * last card in the deck to that position and reduces the cardsRemaining by one. 
 * This is important. if the random flag is false you should always get the card at 
 * position 0. When you swap the card out you should also set the old position to null 
 * for safety. <br>
 * My solution length: 10 lines
 * @return - the card drawn or null if no cards left in deck
 */

public Card getRandomCard() {
    // use random number generator
    Random rand = new Random();
    int randomCardNo = rand.nextInt(getCardsRemaining());
    removeCard(randomCardNo);
    return card[randomCardNo];
}

/**
 * Return the number of cards remaining in the deck.
 * My solution length: 6 lines
 * @return - the total cards remaining
 */

public int getCardsRemaining() {
    int temp = 100;
    for (int index = 0; index < card.length; index++) {
        if ((card[index] == null) ) {
            temp = temp -1;
        }}
    cardsRunning = temp;
    return cardsRunning;}

/**
 * BONUS Method
 * My solution length: XXX
 * @return - shuffle cards in deck 
 */

public void shuffle(Card[] card) {
    int index; 
    Card temp;
    Random random = new Random();
    for (int i = card.length - 1; i > 0; i--){ 
        index = random.nextInt(i + 1);
        temp = card[index];
        card[index] = card[i];
        card[i] = temp;}}

private void removeCard(int no) {
    int size = card.length;
    Card[] newCard = new Card[size];
    int index = 0;
    for (int i = 0; i < size; i++) {
        if (card[i] != null) {
            newCard[index++] = card[i];
        }
    }
    }
}
公共类甲板{
私人卡[]卡=新卡[100];
私人int卡运行=100;
静态尺寸=100;
静态java.lang.String emailID=“MITNY013”;
私有布尔随机=真;
/**
*牌组的构造函数。按以下顺序将以下牌组添加到牌组中
*4次超级幸运一击,伤害100,法力2
*6倍巨型圣诞老人命中,伤害80,法力2
*10倍暴击,伤害50,法力5
*10倍大规模打击,伤害40,法力7
*在单行道上错开15次,伤害30,法力10
*15倍弯曲规则,伤害15,法力10
*40倍交易,5点伤害,5点法力
*我的解决方案长度:16行(不包括空格行) *@param random-是否启用随机功能 */ 公共甲板(布尔随机){
对于(int index=0;index来说,知道卡是什么会很好。也就是说,一个非常简单的方法是使用数组#toString

public java.lang.String toString(){
返回数组。toString(卡);
}

您需要覆盖
类中的
toString
方法,如下所示:

public class Card {
    int manaCost;
    int damageDone;
    String name;

    public Card(int manaCost, int damageDone, String name) {
        if (damageDone < 0) {
            this.damageDone = 1;
        } else {
            this.damageDone = damageDone;
        }
        if (manaCost < 0) {
            this.manaCost = 1;
        } else {
            this.manaCost = manaCost;
        }
        this.name = name;
    }

    // ...

    @Override
    public String toString() {
        return "Card [manaCost=" + manaCost + ", damageDone=" + damageDone + ", name=" + name + "]";
    }
}

public class Deck {
    private Card[] cards;

    public void setCards(Card[] cards) {
        this.cards = cards;
    }

    // ...

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < cards.length; i++) {
            sb.append(cards[i].toString() + "\n");
        }
        return sb.toString();
    }
}
输出:

public class Main {
    public static void main(String[] args) {
        Card[] cards= {
                new Card( 2, 100, "Lucky Strike"),
                new Card( 2, 80, "Santa Hit"),
                new Card( 5, 50, "Critical Hit")
        };
        Deck deck1 = new Deck();
        deck1.setCards(cards);
        System.out.println(deck1);
    }
}
Card [manaCost=2, damageDone=100, name=Lucky Strike]
Card [manaCost=2, damageDone=80, name=Santa Hit]
Card [manaCost=5, damageDone=50, name=Critical Hit]

使用
System.out.println()
用于第二种方法。如果
card.lenght>0
,则应返回一些内容。请在代码上发布一条注释:
java.lang.String
可以简化为
String
java.lang
包总是隐式导入的。您能发布一些代码吗在一张卡片上写的是我的原始信息谢谢Arvind,这有助于谢谢你。现在我可以开始讨论我的get random和get cards出了什么问题remaining@Nico-不要忘记接受答案,以便未来的访问者也可以自信地使用解决方案。检查以了解如何使用。如果有任何疑问/问题,请随时发表评论。