2013-01-02 48 views
0

问题是我必须做一个控制台应用程序,我输入一个数字,它写出符号“|”尽可能多的我插入。例如,如果我插入数字6它写出||||||。它一直询问,直到我插入0并关闭。到目前为止,输入是这样的:输入字符

int input; 

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

我已经尝试使用char数组,但没有用。

+3

那么,你用char数组方法得到了多少?你的代码是什么样的?目前,这听起来像是你想让我们为你做你的功课... –

+3

你读过“循环”一章吗? – I4V

+0

我可能会用循环 –

回答

3

实际上有a constructorstring初始化字符串给定的字符一定次数:

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

s将字符串"||||||||||"

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是让半无限(克里斯·辛克莱指出,这只是2,147,483,647次)枚举有大部分单个语句的代码。
  • 第一个Select逐行读取输入并将有效输入转换为整数,其余为-1(请注意,在此示例中-1是“无效输入”的可能值,通常会返回Tuple<int, bool>int?来表示无效值
  • Where过滤掉“无效”的输入(输入正确负数以及所有非数字,其中为-1通过以前报道Select)。
  • TakeWhile提供终止条件为0
  • Select打印结果。请注意,要从相同字符的多个副本构造字符串应该使用适当的new String("|", count)构造函数,但它不那么有趣。
  • finally Count强制立即重复查询。
+0

尝试为该readline实现TryParse :-P – Fredou

+0

但是,这只会运行2,147,483,647次! –

+3

-1,程序只是在进行任何输入之前竞争 –

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 

现在有乐趣做作业

0

拖基本概念,你应该知道

for循环:

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

这是做某事的常见模式input次,所以如果input等于6,那么它会比//do stuff大6倍。


控制台。写

Console.Write('|'); 

Console.Write写入文本控制台没有将在末处加入一个新行。


我确定您可以将某些语言功能以某种方式组合起来,以满足您的要求。

+0

非常感谢。我用它并使用Do While循环。 :) –