c#console app简单计算器不工作

时间:2014-12-26 01:50:03

标签: c# console-application calculator

我试图用一个函数制作一个计算器,但是当我想要返回我的价值时计算' ,它会给我的函数中的变量值为0,而不是计算。 当我写右操作符时,默认文本也会出现。

  static void Main(string[] args)
    {

        string input1,input2,opera,product = "";
        Int32 v,n;

        Console.WriteLine("please insert first number: ");
        input1 = Console.ReadLine();

        Console.WriteLine("please insert second number: ");
        input2 = Console.ReadLine();

        if (numeric(input1, out v) && numeric(input2, out n))
        {
            Console.WriteLine("give operator: *, /, -, +");
            opera = Console.ReadLine();

            Console.WriteLine(operat(product));


        }

     private static string operat(string oper){

        double input1 = 0, input2 = 0;
        double calculation = 0;

        switch (oper)
        {
            case "*":
                calculation += input1 * input2;
                break;
            case "/":
                calculation += input1 / input2;
                break;
            case "+":
                calculation += input1 + input2;
                break; ;
            case "-":
                calculation += input1 - input2;
                return calculation.ToString();
            default:
                Console.WriteLine("you gave the write operator...");
                break;
        }
        return calculation.ToString();

忽略数字函数......

3 个答案:

答案 0 :(得分:2)

仅仅因为您在不同的函数(input1input2)中将变量命名为相同,这并不意味着它们具有相同的值。事实上,他们甚至没有相同的类型!尝试删除=0部分以便自己查看,编译器会告诉您它从未被分配给它。

你想要的是只在主函数中包含操作数和操作符的变量,并将它们传递给你的工作函数。

答案 1 :(得分:1)

将您的操作功能更改为

private static string operat(string oper,double input1,double input2)

并删除此行

double input1 = 0, input2 = 0;

并调用operat函数

operat(opera,double.Parse(input1),double.Parse(input2));

答案 2 :(得分:0)

将static void main中的input1和input2重构为类字段。在操作方法中使用这些引用。 operator方法中的input1和input2变量不保存静态void main方法中捕获的值。这些只是方法的局部变量