static void Main()
    {
        string str;
        str = Console.ReadLine();
        while (str != null)//HERE!
        {
            str = str.Remove(0, 1);
            str = str.Remove(str.Length - 1, 1);
            string[] value = str.Split(',');
            int[] intval = new int[value.Length];
            for (int i = 0; i < value.Length; ++i)
            {
                bool re = int.TryParse(value[i], out intval[i]);
                Console.WriteLine(intval[i]);
            }
            str = Console.ReadLine(); 
        }
    }

Привет, в программе выше, я хочу судить, есть ли что-то, что не читается в консоли, используя "str! = Null".

Однако ReadLine () вернула мне «» вместо нуля, и программа может войти в цикл while и сгенерировать неправильный результат.

Как я могу это исправить?

3
user53670 7 Июл 2009 в 08:55

4 ответа

Лучший ответ
while(!string.IsNullOrEmpty(str))

Проверьте это для обоих с помощью встроенного метода

Если он возвращается пустым, они просто нажимают ввод, и в любом случае это ваш дозорный, так что вы можете потерпеть неудачу.

8
DevelopingChris 7 Июл 2009 в 04:57
 while (!string.IsNullOrEmpty(str))
{
...
}
0
Arsen Mkrtchyan 7 Июл 2009 в 04:57

ReadLine блокируется, пока пользователь не нажмет клавишу ввода. Итак, если вы просто нажмете клавишу ввода, вы получите пустую строку.

0
Gishu 7 Июл 2009 в 04:57

Из документов:

Если нажать символ CTRL + Z, когда метод считывает ввод с консоли, метод возвращает пустую ссылку (Nothing в Visual Basic). Это позволяет пользователю предотвратить дальнейший ввод с клавиатуры при вызове метода ReadLine в цикле.

Таким образом, вы действительно можете получить нулевую ссылку при вызове ReadLine (). Однако метод String.IsNullOrEmpty проверит оба случая за вас.

2
Ed S. 7 Июл 2009 в 04:59