Loading...
VesselinTonchev avatar VesselinTonchev 5 Точки

Пренасяне на стойност през методите

Хора, помагайте, че ще си направя лаптопа на парчета, моля ви. Явно правя нещо грешно и не намирам отговор в мрежата. Искам от Main да отида в два други метода, да си направя некви изчисления и да се върна в Main, за да ги изпринтя. Да, ама като отида там, променливите си вземат дефоутните стойности, които съм дифинирал в началотона същия този Main. Ако не ги регистрирам там, не ми дава да ги ползвам в методите. Кодът долу вече и аз не знам какъв е що е. Всякви простотии опитвах. Бесен съм, защото знам, че е елементарно, а ми бяга по тъча.

using System;

namespace Password_Validator
{
    class Program
    {
        static void Main(string[] args)
        {
            string password = "yPas23";
            bool invalidChar = false;
            bool isDigits2OrMore = false;

            LenghtChecker(password);
            DigitsChecker(password, invalidChar, isDigits2OrMore);

            if (invalidChar == false && isDigits2OrMore == true && (password.Length >= 6 || password.Length <= 10))
            {
                Console.WriteLine("Password is valid");
            }
        }
        public static void DigitsChecker(string password, bool invalidChar, bool isDigits2OrMore)
        {
            char[] passwordToArray = new char[password.Length];
            int digitsCounter = 0;
            Console.WriteLine(passwordToArray[1]);
            for (int i = 0; i < password.Length; i++)
            {
                char letter = password[i];

                if (Char.IsDigit(letter))
                {
                    digitsCounter++;                    
                }
                if (letter >= 'a' && letter <= 'z')
                {
                }
                else if (letter >= 'A' && letter <= 'Z')
                {
                }
                else if ((int)letter > 47 && (int)letter < 58)
                {
                }
                else
                {
                    invalidChar = true;
                }
            }
            if (invalidChar)
            {
                Console.WriteLine("Password must consist only of " +
                        "letters and digits");
            }
            Console.WriteLine(digitsCounter < 2 ? "Password must have at " +
                    "least 2 digits" : "");
            if (digitsCounter >= 2)
            {
                isDigits2OrMore = true;
            }
        }
        public static void LenghtChecker(string password)
        {
            if (password.Length < 6 || password.Length > 10)
            {
                Console.WriteLine("Password must be between 6 and 10 characters ");
            }
        }
    }
}

 

Тагове:
0
Module: C# Advanced
willystyle avatar willystyle 2472 Точки

Това е понеже подаваш аргументи които са value type (не reference type), в случая щом искаш да ги мениш в метода ги подавай по референция, примерно:

public static void LenghtChecker(ref string password) 

съответно викането на метода става:

LenghtChecker(ref password) 
0
17/02/2020 17:47:23
VesselinTonchev avatar VesselinTonchev 5 Точки

Просто няма никаква разлика. Грешката си е същата. Виж тук

https://imgur.com/a/oGkmzDK

0
VesselinTonchev avatar VesselinTonchev 5 Точки

Успях да направя по - лесна задача с рефернции и се получи. Почвам да го разбирам. Благодаря много за насоката :)

1
VesselinTonchev avatar VesselinTonchev 5 Точки
using System;

namespace Password_Validator___V._3
{
    class Program
    {
        static int LenghtChecker(ref string password)
        {
            if (password.Length < 6 || password.Length > 10)
            {
                Console.WriteLine("Password must be between 6 and 10 characters");
            }            

            return password.Length;
        }

        static int DigitsChecker(ref string password, ref int digitsCounter)
        {
            char[] passwordToArray = new char[password.Length];
            digitsCounter = 0;

            for (int i = 0; i < password.Length; i++)
            {
                char letter = password[i];

                if (Char.IsDigit(letter))
                {
                    digitsCounter++;
                }
            }
            if (digitsCounter < 2)
            {
                Console.WriteLine("Password must have at least 2 digits");
            }            

            return digitsCounter;
        }

        static bool ValidCharachters(ref string password, ref bool invalidChar, ref int digitsCounter)
        {
            invalidChar = false;

            for (int i = 0; i < password.Length; i++)
            {
                char letter = password[i];

                if (letter >= 'a' && letter <= 'z')
                {
                }
                else if (letter >= 'A' && letter <= 'Z')
                {
                }
                else if ((int)letter > 47 && (int)letter < 58)
                {
                }
                else
                {
                    invalidChar = true;
                }
            }
            if (invalidChar)
            {
                Console.WriteLine("Password must consist only of letters and digits");
            }
            
            return invalidChar;

        }
        static void Main(string[] args)
        {
            string password = Console.ReadLine();
            int digitsCounter = 0;
            bool invalidChar = false;

            ValidCharachters(ref password, ref invalidChar, ref digitsCounter);
            LenghtChecker(ref password);
            DigitsChecker(ref password, ref digitsCounter);

            if (invalidChar == false && digitsCounter >= 2 &&
                !(password.Length < 6 || password.Length > 10))
            {
                Console.WriteLine("Password is valid");
            }
        }
    }
}

 

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.