这是家庭作业的帮助。我已经获得了一个简单的卡片交易程序,我已经被赋予了一个列表类的任务,可以记录每个套装绘制的等级。我现在遇到的问题是我的输出。我已经通过一个循环来对每个套装进行迭代,并且在停止卡被击中后,循环停止并且我必须输出从每个套装中抽取的牌。
我的输出功能如下所示。
void list::Output(){
while(curr!=NULL){
cout << curr->data;
curr = curr->next;
}
}
这是将字符串放入其中一个列表的循环之一。
list Deck[4];
if (suit2 == suit[0]){ //suit2 is the suit of the current card
for (int i=0;i<13;i++){ //suit is a const string array provided by the teacher
if (rank2 == rank[i]) //rank2 is the current rank, rank is the const string
Deck[0].Input(i);
}
}
当我调用输出函数时,它似乎工作正常。也就是说,直到我尝试添加一个endl;之后或添加任何类型的标准输出。当我尝试这样做时,输出将全部间隔开,格式奇怪。
例如,当我写简单时
Deck[0].Output();
编译很好,输出很好,如下:
King Jack 8 Jack 6 Ace%
但是当我在它之后添加一个endl时:
Deck[0].Output();
cout << endl;
编译很好,但输出如下:
King
Jack
8
Jack
6
Ace
可能导致这种情况的原因是什么?这非常令人沮丧。
答案 0 :(得分:0)
如果您正在做类似
的事情if (rank2 == rank[i])
Deck[0].Output(i);
cout << endl;
然后意识到cout << endl;
是无条件执行的;缩进是误导性的。做到这一点
if (rank2 == rank[i]) {
Deck[0].Output(i);
cout << endl;
}
请注意这对括号。