Исправить ошибки в коде [закрыт]

135
23 марта 2019, 19:10

Помогите, пожалуйста, исправить ошибки

Задание: Даны два числа. Определите цифры, которые входят как в первый так и второго числа.

Выдает ошибки:

  1. Использование локальной переменной "d", которой не присвоено значение.

  2. Левая часть выражения присваивания должна быть переменной, свойством или индексатором.

    class Program
    {
        static void Main(string[] args)
        {
            int a, k,b;
            String d;
            Console.WriteLine("Vvod a");
            a = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Vvod b");
            b = Convert.ToInt32(Console.ReadLine());
            k = b;
            while(k>0)
            {
                if (k % 10 = d)
                    Console.WriteLine(d, ' ');
            }
            k= k / 10;
            Console.ReadKey();
        }
    }
    
Answer 1

В ошибке вам очень подробно все описали.

Когда вы пишите String d; вы объявляете переменную, но еще не говорите, что там есть(не присвоили значение). Т.е вы назвали имя человека, но человека с таким именем нет. Если вы позовете человека по имени, то никто не откликнется. Ибо вы объявили об и только.

В вашем коде есть другой случай(выше строчки 1) int a,k,b;

Тут вы тоже объявляете 3 переменных, но не присваиваете значение, но перед тем как использовать вы пишите эту строчку a = Convert.ToInt32(Console.ReadLine());. В этой строчке вы присваиваете переменной a значение, которое получите справа от знака =(т.е из выражения).

После того, как это строчка сработает, в переменной а у вас уже наконец что-то есть. Т.е есть и имя и человек(по аналогии).

Дальше на строчке 2 вы пытаетесь использовать переменную d в условии. Заметьте, не присвоить ей значение, а уже использовать. Во первых делаете это вы не правильно Вместо if(k % 10 = d) Надо if(k % 10 == d)

В первом случае это оператор присваивания, во втором случае оператор сравнения(слева в списке найдете эти 2 оператора) https://docs.microsoft.com/ru-ru/dotnet/csharp/language-reference/operators/

Вот вам и ошибка. Вы объявили переменную, не присвоили ей значение и пытаетесь по имени получить значение. А значения то нет.

P.S. Есть еще вероятность, что вы d с b , но дальше в строчке Console.WriteLine(d, ' '); вам все равно нужна переменная d.

В строке 2, как написал @Igor вы пытаетесь число со строкой сравнить. Это выглядит нелогично. Вы же не можете сравнить цифру 1 и слово "чебурек"?

Получает вы задаете вопрос: а равна ли цифра 1 "чебуреку"? И что вам нужно на это ответить?

Answer 2
if (k % 10 = d)

Если тут должна быть операция сравнения, то это ==, а 'd' не присвоено никакого значения.

READ ALSO
Как изменить опцию в dll

Как изменить опцию в dll

Пишу учебный проект совсем скоро сдача, и как всегда проблемы у библиотеки EMGU CV(open cv) отобрали патент на SURF методИ он был отключен в сборке

165
Создание и запись файлов через потоки

Создание и запись файлов через потоки

Есть класс генерации строки определенного форамата:

177
C# System.Diagnostics.Process.GetProcessesByName ест много памяти

C# System.Diagnostics.Process.GetProcessesByName ест много памяти

У меня есть две программы которые просто проверяют наличие процессов друг-друга методом SystemDiagnostics

151
Xpath для HtmlAgilityPack C#

Xpath для HtmlAgilityPack C#

Есть такое код страницы:

159