制作带有打印命令的控制台

时间:2016-01-01 01:42:48

标签: c#

我正在尝试制作一个程序,可以打印出" print:"在控制台应用程序中(我不知道如何解释它)

如果你不明白我认为我的代码会帮助你

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LiteConsole
{
    class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {
                string input = Console.In.ReadLine();
                char[] chars = input.ToCharArray();
                if (input.Contains("print"))
                {
                    int Place = 0;
                    int colenPlace = 0;
                    foreach (char a in chars)
                    {
                        Place++;
                        if (chars[Place].Equals(":"))
                        {
                            colenPlace = Place;
                            break;
                        }
                    }
                    Console.Write(input.Substring(colenPlace));
                }
            }
        }
    }
}

当我运行程序并输入" print:Hello World"它没有打印" Hello World"就像它应该的那样,它只是进入下一行。

2 个答案:

答案 0 :(得分:3)

快速浏览一下,我可以在你的应用程序中看到两个错误:

首先,如果找不到':'字符,代码将生成IndexOutOfBoundsException。这是因为您在使用之前递增索引,因此您永远不会比较输入的第一个字符,并且会在最后一个字符后生成异常。将Place++;移动到循环的末尾以解决此问题:

foreach (char a in chars)
{
    if (chars[Place].Equals(":"))
    {
        colenPlace = Place;
        break;
    }
    Place++;
}

第二次,这永远不会成真:

chars[Place].Equals(":")

该值为char,但您需要将其与string进行比较。将其与char进行比较:

chars[Place].Equals(':')

甚至只是使用直接比较(如果你试图错误地使用字符串,这会导致编译时错误):

chars(Place) == ':'

答案 1 :(得分:0)

可能会将其简化为:

static void Main(string[] args)
{
    while (true)
    {
        var input = Console.ReadLine();
        if input.StartsWith("print:")
            Console.WriteLine(input.Replace("print:", ""));
    }
}