【发布时间】:2021-04-16 09:00:30
【问题描述】:
我是 C# 的初学者,作为我的第一个程序,我制作了一个带有 2 个变量的简单计算器,现在我创建了一个计算器 v2,您可以在其中放入所需的变量数量,但它不起作用。
它有两个大问题导致计算器无法按预期工作:
- 操作数与数字相同,应该小于 1
- 每次退出开关时,“sum”变量都会重置为 0 或最后输入的数字,我已经尝试了一些更改,但它仍然会重置值。
该计划分为 2 个班级。 计算器类带有计算函数,程序类带有主函数。
计算器类代码:
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 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,这就是Sum不断重置的原因(Calculator op = new Calculator(number)在您的for循环中) -
与您的问题无关:您的
Divide()逻辑错误,x / 0不是1而是一个未定义的数字。 -
@Cleptus 他没有返回
1他正在返回x / 1(实际上将“除以零”替换为“不做任何事情”) -
@Rafalon 确实如此,但他可以只拥有
if (num == 0) return sum;,恕我直言更清楚 -
@Cleptus 是真的 :)
标签: c# oop calculator