-1

这是作业帮助。我得到了一个简单的发牌程序,并且我得到了创建一个列表类的任务,该类可以记录每个花色的等级。我现在遇到的问题是我的输出。我已经通过一个循环对每个花色进行迭代,并且在击中停止牌后,循环停止并且我必须输出从每个花色中抽出的牌。

我的输出函数看起来像这样。

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

这可能是什么原因造成的?这非常令人沮丧。

4

1 回答 1

0

如果你正在做类似的事情

if (rank2 == rank[i])
    Deck[0].Output(i);
    cout << endl;

然后实现cout << endl;无条件执行;缩进具有误导性。做了

if (rank2 == rank[i]) {
    Deck[0].Output(i);
    cout << endl;
}

注意这对大括号。

于 2013-09-23T02:35:33.387 回答