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 次)可以在单个语句中枚举大部分代码。
  • 首先Select逐行读取输入并将有效输入转换为整数,其余为 -1(请注意,在此示例中,-1 是“无效输入”的可能值,通常会返回Tuple<int, bool>int?表示无效值
  • Where过滤掉“无效”输入(正确输入的负数以及之前报告为 -1 的所有非数字Select)。
  • TakeWhile为 0 提供终止条件。
  • 第二次Select打印结果。请注意,要从同一字符的多个副本构造字符串,应该使用正确的new String("|", count)构造函数,但它不那么有趣。
  • finallyCount强制立即迭代查询。
于 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

两个你应该知道的基本概念

for循环:

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

这是做某事input次数的常见模式,因此如果input等于6,则它将执行//do stuff6 次。


控制台.Write

Console.Write('|');

Console.Write将文本写入控制台而不在末尾添加新行。


我相信您可以以某种方式组合其中一些语言功能来满足您的要求。

于 2013-01-02T20:06:37.407 回答