2016-06-20 14 views
1

私はオブジェクトのリストを持っていて、のすべての行にA、B、Cの3行があります。それぞれオブジェクトです。私はこれをしようとしていますが、それはまだディスプレイにめちゃくちゃされている:データの表示と整理を正しく行うにはどうすればよいですか?

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

言語タグspamとは何ですか? – NathanOliver

+1

0%3は0です。したがって、一致する文字を1に変更するか、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

@ノープ:コードは正しいです。あなたが結果を得られなかったなら、あなたは何か間違ったことをしました。 'switch'を使うことができない場合は、言語が提供するものを使用してください。どの言語でも条件文/関数が少なくとも提供されます。これはチュートリアルサイトではなく、あなた自身でいくつかの抽象化作業を行うことが期待されています。 – Olaf

+0

これは動作し、出力はA B C A B C A ... if文でswitch文を変更することができます – 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); 
} 
関連する問題