2016-01-01 4 views
0

Я пытаюсь сделать программу, которая будет печатать все, что после того, как «печать:» в консольном приложении (я не знаю, как еще объяснить)Создание консоли с печатью COMAND

Если вы дон «т понимаю, что я думаю, что мой код поможет вам

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)); 
       } 
      } 
     } 
    } 
} 

Когда я запускаю программу и„печать: Hello World“типа он не печатает„Hello World“, как он должен, он просто переходит к следующей строке ,

+0

Я подозреваю, что есть лучший способ найти положение символа в строке. Попробуйте выполнить поиск - т.е. Bing - [C# position char в строке] (https://www.bing.com/search?q=c%23+position+char+in+string) или Yachoo https://search.yahoo. com/search? p = c% 23 + position + char + in + string, если Google ничего не нашел. –

+0

Ваш немного поздно, но спасибо в любом случае! Я проверю ваш метод. – Elliot

ответ

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) == ':' 
+0

Это действительно отвечает на вопрос ... – Prescott

+0

Спасибо! Я немного новичок в C#, извините. – Elliot

+2

@ElliotLinn: Не беспокойтесь, мы все были новыми. Как общий совет, ваш * самый ценный инструмент в качестве разработчика - это отладчик. Используйте его, чтобы выполнить код, по очереди, по мере его выполнения. Вы можете проверить значения времени выполнения, посмотреть, как ведет себя логика и т. Д. Это действительно поможет вам определить конкретные проблемы, не задумываясь сразу о том, что происходит в вашей голове. – David

0
МОГ

вероятно, упростите его до:

static void Main(string[] args) 
{ 
    while (true) 
    { 
     var input = Console.ReadLine(); 
     if input.StartsWith("print:") 
      Console.WriteLine(input.Replace("print:", "")); 
    } 
} 
Смежные вопросы