CSharp:从一个循环到另一个循环提取变量

时间:2018-10-25 15:03:39

标签: loops variables while-loop

我在设置计算器时遇到问题。 变量(方法)是一个字符,在第一个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 :(得分:0)

实际上,您实际上在使用变量method来正确执行此操作。查看您得到的错误-“变量未分配”。这是有道理的,因为您在声明时未定义它。但是应该在第一个循环中定义它,所以为什么在第二个循环中不定义它?

答案是,第一个循环甚至没有运行。问题是这两行:

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

您会发现,条件continu2 != 0从一开始就为假,因此循环-包括其中的行method = char.Parse(Console.ReadLine());将会消除您的错误-根本不会运行。

解决方案:将您的条件更改为continu2 == 0,而不是continu2 != 0