Защо не сработва else?

Visual Studio Xamarin Програмиране Основи на програмирането със C#

При така написан calc - else на  нa if (runcalculate.....) не сработва. Ако else е на if (param.Length ==4)  сработва.

И при мен else не работеше :( Оправи се, като го преместих под if (param.Length == 4) и добавих още една проверка || _input.ToLower().Contains ("-п")) (без нея изкарваше съобщението за грешка след помощната информация). Така изглежда работещият код :)))

public void calc (string _input) { try { string [] param = _input.Split (' ');

            if (param.Length > 1 && _input.ToLower().Contains ("-п"))
            {
                help ();
            }

            if (param.Length == 4 || _input.ToLower().Contains ("-п"))
            {
            }else{
                _cl.Default ();     Console.WriteLine ("Има грешно въведени параметри. С параметъра '-п' можете\nда видите синтаксиса на командата.\n");
            }

            double _result = 0;

                if (runCalculate (param, out _result))
                {
                    _cl.Default ();     Console.Write ("Обемът на вдлъбнатия ъгъл е ");
                    _cl.Result ();      Console.Write (_result.ToString ("N2"));
                    _cl.Default ();     Console.WriteLine (" m3\n");

            }

        }catch{
        }
    }

А това е резултатът в конзолата :)

Според мен проблемът е в процедурите runCalculate и runCalculation. Те винаги връщат стойност за обем. Ако TryParse не успее, параметърът е 0, както е инициализиран. Ако са изпълнени условията за точната команда и параметри, трябва да се провери дали параметрите са по-големи от нула. Ако не са, ще се изпълни False на тези процедури. Проверката за броя на елементите на масива, получен от входния стринг, може да е също там. Тя е необходима, за да не се въведат повече от необходимия брой параметри. private bool runCalculation ( string[] _param, out double _result ) { try { double _a1 = 0, _b1 = 0, _a2 = 0, _b2 = 0, _h = 0; //_param[0] == Double.TryParse (_param [1], out _a1); Double.TryParse (_param [2], out _b1); Double.TryParse (_param [3], out _a2); Double.TryParse (_param [4], out _b2); Double.TryParse (_param [5], out _h);

            if (_a1 > 0 && _a2 > 0 && _b1 > 0 && _b2 > 0 && _h > 0 && _param.Length==6) {

                double F1 = _a1 * _b1, F2 = _a2 * _b2;
                _result = _h * (F1 + F2) / 2;
                return true;
            }
        } catch {
        }
        _result = 0;
        return false;
    }

еlse трябва да е извън скобите на този if(param.Length==4) т.е. да е алтернатива на вариант едно -ако при парсване дължината не е 4 и вариант две- да не съдържа помощ ако дължината е 4, но не се е парснал успешно то резултата ще е 0


Вашият отговор

Научи компютърните програми онлайн от топ експертите на България
Регистрацията в АУЛА ви дава:
  • 20 безплатни урока
  • Трикове и тънкости за софтуера
  • Отговори на вашите въпроси
  • Регистрация