Софтуерно Инженерство
Loading...
+ Нов въпрос
Kiril1914 avatar Kiril1914 2 Точки

string problem или проблем при четенето на текст в цикъл...

Здравейте, имам следния проблем/въпрос: Защо когато използвам цикли("while", "for " и т.н) при четенето на string в тялото на самият цикъл от конзолата ми го чете като число а не като текст! 

Пример: 

                while (условие)
                {
                    int number = int.Parse(Console.ReadLine());

                    string command = Console.ReadLine();

                    if (command == "stop")
                    {

                         Console.WriteLine("End!");
                        break;
                    }

 

И съответния вход:

50

10

10

stop                   

При команда "stop" чупи програмата! Като няма принтенето от "Console.WriteLine()" и ми изписва някакво съобщение, че формата на стринга не е приемлив.  При debug "command " ми го чете като число, в случая 10. А не като текст! 

Направи ми впечатление, че ако четем string извън проверките и няма други четения, работи коректно. Но на мен ми трябва в самият цикъл да го чете всеки път, само като текст...

 

Гледах няколко лекции от курсовете "Programming Basics with C#" и там лекторите жунглират със "string" както пожелаят. Пробвах по същия начин но не се получава. Това горе е само пример, тъй като условието на задачата която решавам е прекалено сложно и ще отнеме време за обяснения... :D :D   

Благодаря 

0
Programming Basics
T_Chapkanov avatar T_Chapkanov 10 Точки

В примерът който си написал, 'Stop' трябва задължително да ти е на четна позиция при четенето от конзолата и ако е нечетна позиция ще бъде прочетено от първият реадер и преобразувано в число. Пробвай с tryParse, трябва само да погледнеш в интернет как се ползва, и как може да го ползваш в твоето решение.

0
28/03/2020 22:39:01
Kiril1914 avatar Kiril1914 2 Точки

Благодаря за съдействието!

Поздрави

0
martin4o124 avatar martin4o124 1 Точки

Защото имаш два входа, тоест когато напишеш команда "Stop" отива при 

int number = int.Parse(Console.ReadLine()); , което очаква число, а ти му даваш string и съответно ти дава грешка

не знам какво е условието, но аз направих примерен код с обяснения, който се надявам да ти помогне.

https://pastebin.com/v27j5EEa

0
Kiril1914 avatar Kiril1914 2 Точки

Всъщност не е така :D Реших да дебъгна кода ти, при четенето, "command" пак си го чете като число а не като текст. Даже приема два входа, двойки числа. Явно ми трябва накакъв конвърт на string.

0
29/03/2020 10:35:09