CSharp: извлечение переменной из одного цикла в другой - PullRequest
0 голосов
/ 25 октября 2018

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

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;

        }
    }
}

}

1 Ответ

0 голосов
/ 25 октября 2018

Вы действительно делаете это правильно с переменной method.Посмотрите на ошибку, которую вы получаете - «переменная не назначена».Это имеет смысл, потому что вы объявили это без определения.Но он должен быть определен в этом первом цикле, так почему же он не определен, когда он попадает во второй цикл?

Ответ заключается в том, что первый цикл даже не работает ,Проблема состоит в том, что эти две строки:

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

Видите ли, условие continu2 != 0 является ложным с самого начала, поэтому цикл - включая строку внутри него method = char.Parse(Console.ReadLine());, которая бы избавилась от вашей ошибки -никогда не работает вообще.

Решение: измените ваше состояние на continu2 == 0 вместо continu2 != 0.

...