2016-06-20 13 views
1

У меня есть список объектов, и я хочу три строки A, B и C для каждый объект. Я пытаюсь это сделать, но он все еще запутан на дисплее:Как я могу правильно отображать и упорядочивать свои данные?

for (int i = 0; i < MyListSize * 3; i++) 
{ 
    if (i % 3 == 0) 
     Console.Writeline("C"); // any display function 
    else if (i % 2 == 0) 
     Console.Writeline("B"); // any display function 
    else 
     Console.Writeline("A"); // any display function 

} 

Может ли кто-нибудь указать, в чем моя ошибка?

Выходной ток:

C A B C B A C A B C B A

Ожидаемый результат:

A B C A B C A B C A B C

+0

Прежде чем вы опуститесь в забвение ... выберите * один * язык. – Will

+0

Что такое спам языка? – NathanOliver

+1

0% 3 равно 0. Так что либо измените буквы на совпадение, либо начните с 1. – juharr

ответ

5

Вы должны изменить код:

for (int i = 0; i < MyListSize * 3; ++i) { 
    switch (i % 3) { 
     case 0: 
      Console.Writeline("A"); // any display function 
      break; 
     case 1: 
      Console.Writeline("B"); // any display function 
      break; 
     case 2: 
      Console.Writeline("C"); // any display function 
      break; 
    } 
} 
+0

Это не сработало. Отображается «B A C B A C B A C B A C», и что, если я не могу использовать 'switch()', и он находится на другом языке, кроме C++? –

+2

@Nope: код верен. Если вы не получили результат, вы сделали что-то не так. Если вы не можете использовать 'switch', используйте все, что предоставляет язык. Любой язык предоставляет условное утверждение/функцию как минимум. Это не учебный сайт, вы, как ожидается, сделаете некоторые попытки абстракции самостоятельно. – Olaf

+0

Он работает, и выход A B C A B C A ... вы можете изменить оператор switch с ifs – chema989

0

Это должно работать на C# и C++:

for (int i = 0; i < YourListSize * 3; i++) 
{ 
    if (i % 3 == 0) 
     cout << "A"; // or Console.Writeline() 
    if (i % 3 == 1) 
     cout << "B"; 
    if (i % 3 == 2) 
     cout << "C"; 
} 
0

UPD. Как сказал @juharr, ваш цикл for начинается с 0 и 0(mod 3) = 0, поэтому ваша последовательность начинается с C. Просто замените for линию:

for (int i = 1; i <= MyListSize; i++) 

.. или уточнить вам ifs


Пока вы не скажете нам ясно, что вы хотите там будут магические предсказания, но не решение. Например:

var s = string.Join(Environment.NewLine, "A", "B", "C"); 
for (int i = 0; i < MyListSize; i++) 
{ 
    Console.Writeline(s); 
} 
Смежные вопросы