我试图用一个函数制作一个计算器,但是当我想要返回我的价值时计算' ,它会给我的函数中的变量值为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();
忽略数字函数......
答案 0 :(得分:2)
仅仅因为您在不同的函数(input1
和input2
)中将变量命名为相同,这并不意味着它们具有相同的值。事实上,他们甚至没有相同的类型!尝试删除=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方法中捕获的值。这些只是方法的局部变量