gpt4 book ai didi

java - 从数组创建 toString

转载 作者:行者123 更新时间:2023-12-02 09:01:27 24 4
gpt4 key购买 nike

我正在尝试创建一个 toString 来打印数组的详细信息。我可以通过执行 for 循环并在 toString 中使用打印行来让它打印出我想要的外观,但当我想在代码的主要部分中使用它时,显然它不起作用。

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

/** 
* 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;}

这是我的示例,这段代码按照我想要的方式工作,但实际上没有返回任何结果:

public java.lang.String toString(){
int count = 0;
for (int index = 0; index < card.length; index++) {
count++;
System.out.println(count + ": " + card[index]);
}
return "";}

所以我尝试构建一个字符串方法,但它没有返回任何结果,我很困惑。有谁知道我哪里出错了。

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

我正在处理的完整类(class)如下,我在正在处理的其他领域仍然存在问题:

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];
}
}
}
}

最佳答案

您需要重写 CardDeck 类中的 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]

关于java - 从数组创建 toString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60131436/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com