繁体   English   中英

我的计算器应用程序未按预期工作

[英]My calculator application is not working as intended

我是 C# 的初学者,作为我的第一个程序,我制作了一个带有 2 个变量的简单计算器,现在我创建了一个计算器 v2,您可以在其中放置所需的变量数量,但它不起作用。

它有两个大问题使计算器无法按预期工作:

  1. 操作数与数字相同,应该少 1
  2. 每次退出开关时,“sum”变量都会重置为 0 或最后输入的数字,我已经尝试了一些更改,但它仍然会重置该值。

该计划分为 2 个班级。 具有计算功能的计算器 class和带有主要 function 的程序class。

计算器 class 代码:

class Calculator
{
    private double num;
    private double sum = 0;
    
    public Calculator(double number)
    {
        num = number;
    }
 
    public double Add()
    {
        return sum += num;
    }
    public double Divide()
    {
        if(num==0)
        {
            num = 1;
        }
        return sum /= num;
    }

    public double Subtraction()
    {
        return sum -= num;
    }
    public double Multiplication()
    {
        if(sum==0)
        {
            sum = 1;
        }
        return sum *= num;
    }

    public double Sum
    {
        get
        {
            return sum;
        }
    }
}

程序 class 代码:

class Program
{
    static void Main(string[] args)
    {
        Console.ForegroundColor = ConsoleColor.Cyan;
        Console.WriteLine("Choose the number of the operations: 1.Add 2.Divide 3.Subtraction 4.Multiply");
        Console.ResetColor();

        Console.Write("How many numbers do you want to calculate?: ");
        int countNumbers = int.Parse(Console.ReadLine());
        double suma = 0;

        if (countNumbers > 1)
        {
             for (int i = 1; i <= countNumbers; i++)
             {
                Console.Write("Add number: ");
                double number = double.Parse(Console.ReadLine());
                Calculator op = new Calculator(number);

                Console.Write("Operation number: ");
                int operation = int.Parse(Console.ReadLine());

                switch (operation)
                {
                    case 1:
                       op.Add();
                       break;
                    case 2:
                       op.Divide();
                       break;
                    case 3:
                       op.Subtraction();
                       break;
                    case 4:
                       op.Multiplication();
                       break;
                }
                     
                suma = op.Sum;
             }
        
        }
        Console.WriteLine("The sum is {0}", suma);
    }
}

问候

我会首先用第一个数字初始化一个Calculator实例,然后循环获取每个数字/操作:

Console.Write("First number: ");
double number = double.Parse(Console.ReadLine());
Calculator op = new Calculator(number);

for (int i = 1; i < countNumbers; i++)
{
    Console.Write("First number: ");
    double number = double.Parse(Console.ReadLine());

    Console.Write("Operation number: ");
    int operation = int.Parse(Console.ReadLine());

    switch (operation)
    {
        case 1:
            op.Add(number);
            break;
        case 2:
            op.Divide(number);
            break;
        case 3:
            op.Subtraction(number);
            break;
        case 4:
            op.Multiplication(number);
            break;
    }
    
    suma = op.Sum;
}

请注意,为此,我将去掉Calculator中的num字段,并在每个 function 中使用一个参数,如下所示:

public double Add(double num)
{
    return sum += num;
}

另请注意,您显然不使用return值,因此您也可以编写:

public void Add(double num)
{
    sum += num;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM