ohad guetta Ответов: 3

Csharp : извлечение переменной из одного цикла в другой


У меня возникли проблемы с настройкой калькулятора. Переменная(метод) является символом и вводится в первый цикл while.
во втором цикле while я хочу, чтобы переменная(метод) из первого цикла была перенесена во второй цикл.
но есть ошибка, и она говорит, что переменная не назначена.
пожалуйста помочь. вот этот код:

<pre lang="c#">
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Test
{
class Program
{
    static void Main(string[] args)
    {
        int continu = 0;
        int continu2 = 0;
        Console.WriteLine("Welcome To The Alpha Calculator!");
        Console.WriteLine("First,Type A Method");
        char method;
        while (continu2 != 0)
        {
            Console.Write("Type '+' or '-' or '*' or '/' :");
            method = char.Parse(Console.ReadLine());
            if (method == '+' || method == '/' || method == '*' || method == '-')
            {
                continu = 1;
                continu2 = 1;
                Console.WriteLine(method + " Picked");

            }
            else
            {
                Console.WriteLine("Unknown Method Try Again");


            }
            char method2 = method;
        }


        while (continu != 0)
        {

            Console.Write("Pick A First Digit:");
            double num1 = double.Parse(Console.ReadLine());
            Console.Write("Pick A Second Digit:");
            double num2 = double.Parse(Console.ReadLine());
            double sum = 0;
          if (method == '+')
            {
                sum = num1 + num2;
            }
            else if (method == '-')
            {
                sum = num1 - num2;
            }
            else if (method == '/')
            {
                sum = num1 / num2;
            }
            else if (method == '*')
            {
                sum = num1 * num2;
            }
            Console.WriteLine("The Solution is: " + sum);
            continu = 0;

        }
    }
}

}


Что я уже пробовал:

Я попытался изменить значения переменных циклов(continu) на 1, но это не сработало.

3 Ответов

Рейтинг:
24

Vinod Jangle

Это потому, что вы объявляете переменную метода char и присваиваете ей значение только в первом цикле while. Если по какой - либо причине первый цикл while не выполняется, у вас нет никакого значения в переменной во 2-м цикле while-это приводит к ошибке.

Переместитесь ниже строк перед первым выполнением цикла while и решите свою проблему.

char method;

Console.Write("Type '+' or '-' or '*' or '/' :");
method = char.Parse(Console.ReadLine());
--- first while and so on below ---


Рейтинг:
2

OriginalGriff

Посмотрите на свой код (я вырежу материал, чтобы сделать его более очевидным):

        int continu = 0;
        int continu2 = 0;
        char method;
        while (continu2 != 0)
        {
...
        }


        while (continu != 0)
        {
...
        }
Потому что continu2 всегда равен нулю, когда он приходит в первый цикл, код внутри цикла никогда не выполняется.
Потому что continu устанавливается в ноль, то же самое происходит и со вторым циклом.

И в результате ваш метод абсолютно ничего не дает ...


Рейтинг:
0

W∴ Balboos, GHB

Я заметил, что ваш первый цикл while() предназначен для continu2 !=0.
Однако, когда выбирается допустимое значение, вы устанавливаете его равным 1, так что цикл продолжается.
Вам нужно либо установить continu2 в 0, либо, еще лучше, поставить разрыв в блоке if.

char method2 = method; // но method2 не входит в область действия остальной части программы.

Действительно ли он говорит вам, что "метод" неназначен? Рабочая переменная немного расплывчата.

Больше:
Теперь, когда вам char.Parse() метод, вы получите ошибку, когда содержимое не является int. Вам просто нужен персонаж. Итак, наряду с исправлениями цикла, приведенными выше, просто получите символ с клавиатуры и проверьте его значение.