0

質問は、数字を入力して記号「|」を書き出すコンソールアプリケーションを作成する必要があることです。挿入した数だけ。たとえば、番号 6 を挿入すると、|||||| と書き出されます。そして、0を挿入して閉じるまで尋ね続けます。これまでのところ、入力は次のように行われています。

int input;

Console.Write("\n\n Insert an number ---> ");
input = Convert.ToInt32(Console.ReadLine());

char 配列で試しましたが、使用できません。

4

4 に答える 4

3

実際には、指定された文字で文字列を特定の回数初期化するコンストラクターがあります。string

string s = new string('|', 10);

s文字列になります"||||||||||"

于 2013-01-02T19:55:23.183 に答える
2

ループはとても2012年です:)

using System;
using System.Linq;

internal class Program
{
  private static void Main(string[] args)
  {
    Enumerable.Range(0, Int32.MaxValue)
      .Select(i => Int32.TryParse(Console.ReadLine(), out i) ? i : -1)
      .Where(i => i >= 0)
      .TakeWhile(i => i > 0)
      .Select(i => {
         Console.WriteLine(String.Join("", Enumerable.Repeat("|", i)));
         return 0;})
      .Count();
  }
}

説明(答えは非常に深刻ではありません):

  • Enumerable.Range半無限 (Chris Sinclair が指摘したように、2,147,483,647 回しかない) を列挙可能にして、ほとんどのコードを 1 つのステートメントに含めることができるようにすることです。
  • 最初Selectに入力を 1 行ずつ読み取り、有効な入力を整数に変換し、残りを -1 に変換します (このサンプルでは、​​-1 は「無効な入力」の可能性のある値であることに注意してください。通常、無効な値を返すTuple<int, bool>int?、無効な値を意味します)
  • Where「無効な」入力を除外します (正しく入力された負の数値と、以前の によって -1 と報告されたすべての非数値Select)。
  • TakeWhile0 の終了条件を提供します。
  • 2 番目Selectの印刷結果。同じ文字の複数のコピーから文字列を構築するには、適切なnew String("|", count)コンストラクターを使用する必要がありますが、面白くないことに注意してください。
  • 最終的Countにクエリの即時反復を強制します。
于 2013-01-02T19:56:36.463 に答える
0

擬似コード

 is read line a number
   until read line is 0
       for 1 to the number
           print |
     is read line a number
     if not a number go back at asking the number saying it is not a number
 if not a number go back at asking the number saying it is not a number

今、宿題を楽しんでください

于 2013-01-02T19:58:30.327 に答える
0

知っておくべき2つの基本概念

for ループ:

for(int i=0; i<input; i++)
{
    // do stuff
}

inputこれは、何かを何回も実行するための一般input的なパターンです。6//do stuff


Console.Write

Console.Write('|');

Console.Write最後に新しい行を追加せずに、テキストをコンソールに書き込みます。


これらの言語機能のいくつかを何らかの形で組み合わせて、要件を満たすことができると確信しています。

于 2013-01-02T20:06:37.407 に答える