我正在尝试制作一个程序,可以打印出" 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"就像它应该的那样,它只是进入下一行。
答案 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:", ""));
}
}