【发布时间】:2016-06-17 07:52:05
【问题描述】:
用卡片索引替换用户输入
显示在新行上,并且不会替换用户输入的实际数字。我试图将字母和数字放在同一个数组列表中,但我不知道如何显示这些。
【问题讨论】:
-
你正在调用deck,shufflecard,它正在洗牌你的列表
。之后,您调用 getcards(i) --> 这是用户输入。根据逻辑,卡片输出是正确的。
标签: shuffle
显示在新行上,并且不会替换用户输入的实际数字。我试图将字母和数字放在同一个数组列表中,但我不知道如何显示这些。
【问题讨论】:
标签: shuffle
我看到你应该将 String secondCardLetter = card.getCardLetter(); 替换为 String secondCardLetter = deck.getCards(i); 的一件事,否则第二张卡与第一次尝试相同并告诉我
还建议将ArrayList<Card> card = new ArrayList<Card>(); 替换为List<Card> cards = new ArrayList<Card>(); 请注意变量名也发生了变化,因为它是卡片的集合。用循环初始化卡片组
char A = 'A';
int repeats = 2, numOfCards = 8;
for ( int i = 0; i<numOfCards;i++){
for (int j = 0; j<repeats; j++){
cards.add(new Card((char) ( A + i ) + "",i+1,""));
}
}
请注意您的姓名,以描述该方法可能正在做什么。 getCards 方法接受一个整数并返回“卡片”,而 getCards 不应该接受任何参数,只需返回您存储的卡片列表。如果要返回特定卡片,请声明一个名为 public Card getCard(int i) 的方法,注意缺少的字母 s,因为它表明这将返回一张卡片,另一方面 public List<Card> getCards() 方法将返回卡片列表,然后是 for 循环会工作的。
【讨论】:
cards.get(i).setCardLetter(""); 的卡片字母。因此,当您增加积分时,请执行deck.setCardEmpty(data.getFirstUserInput());,然后再执行第二次,如果您理解这一点,请告诉我。如果一切正常,请接受答案谢谢
public void setCardLetter(String letter){ cardLetter = letter; } 中替换它,如果这样做不会更新您在问题中拥有的代码
如果我理解正确,您要做的是继续替换终端输出中的字符,而不会将输出分成新行,对吗?即:从 1 到 100 的计数器?
为此,您需要使用回车符:'\r'
我认为这是您打印卡片字母的那一行,对吧?
System.out.println(format("%10s","\n[ " + firstCardLetter + " ]"));
尝试将其更改为
System.out.println(format("%10s","\r[ " + firstCardLetter + " ]"));
编辑
抱歉,您必须使用\033[F 字符,如here 所述
System.out.println(format("%10s","\033[F[ " + firstCardLetter + " ]"));
【讨论】: