错误。无法分配,因为它是一个方法组
Error. Cannot assign because it is a method group
Static void Main(string[] args)
{
double x;
double y;
char symbol;
Console.WriteLine("First number: ");
x = double.Parse(Console.ReadLine());
Console.WriteLine("Second number: ");
y = double.Parse(Console.ReadLine());
Console.WriteLine("+ or - or * or / ?: ");
symbol = (char)Console.Read();
Console.Clear();
Console.WriteLine("First number = {0,0:f} \nSecond number = {1,0:f} \nResult = {2,0:f}", x, y, answer(x, y, symbol));
}
static double answer(double a, double b, char simb)
{
if (simb == '+')
answer = a + b;
else
if (simb == '-')
answer = a - b;
else
if (simb == '*')
answer = a * b;
else
if (simb == '/')
answer = a / b;
else
Console.WriteLine("Error");
我正在为我的 class 做项目。这是一个小计算器,您输入第一个数字,然后输入第二个数字,然后选择 + - * 或 /。不幸的是有一个错误 我不知道如何修复。有什么想法吗?
你可能想在 answer
方法中做的是
if (simb == '+')
return a + b;
....
正如所描述的那样,您正在 return 从函数中获取一个值。
您不能为方法赋值。
不过,在 Pascal 中,如果我没有记错的话,return 从函数中获取值是一种有效的方法。
在 C# 中,return 值不是通过将其分配给方法名称来设置的,而是使用 return
关键字设置的。
您可以为 return 值创建局部变量。这为方法提供了一个单一的出口点,在某些情况下更清晰:
static double answer(double a, double b, char simb) {
double result;
if (simb == '+') {
result = a + b;
} else if (simb == '-') {
result = a - b;
} else if (simb == '*') {
result = a * b;
} else if (simb == '/') {
result = a / b;
} else {
Console.WriteLine("Error");
result = 0;
}
return result;
}
或者您可以 return 值直接。请注意,您将使用 return
:
立即退出该方法
static double answer(double a, double b, char simb) {
if (simb == '+') {
return a + b;
}
if (simb == '-') {
return a - b;
}
if (simb == '*') {
return a * b;
}
if (simb == '/') {
return a / b;
}
Console.WriteLine("Error");
return 0;
}
在(旧的)Basic 语言中,您 return 通过将函数值分配给函数名称来从函数中获取值。在 C# 中,您使用 return 语句。请注意,return 语句会立即终止该方法,因此您不再需要 else-cases。
static double answer(double a, double b, char simb)
{
if (simb == '+') return a + b;
if (simb == '-') return a - b;
if (simb == '*') return a * b;
if (simb == '/') return a / b;
Console.WriteLine("Error");
return 0; // There must be a return statement in non-void methods.
}
但是,我建议使用 switch 语句,而不是长的 if 链
static double answer(double a, double b, char simb)
{
switch (simb) {
case '+':
return a + b;
case '-':
return a - b;
case '*':
return a * b;
case '/':
case ':':
return a / b;
default:
Console.WriteLine("Error");
return 0;
}
}
Static void Main(string[] args)
{
double x;
double y;
char symbol;
Console.WriteLine("First number: ");
x = double.Parse(Console.ReadLine());
Console.WriteLine("Second number: ");
y = double.Parse(Console.ReadLine());
Console.WriteLine("+ or - or * or / ?: ");
symbol = (char)Console.Read();
Console.Clear();
Console.WriteLine("First number = {0,0:f} \nSecond number = {1,0:f} \nResult = {2,0:f}", x, y, answer(x, y, symbol));
}
static double answer(double a, double b, char simb)
{
if (simb == '+')
answer = a + b;
else
if (simb == '-')
answer = a - b;
else
if (simb == '*')
answer = a * b;
else
if (simb == '/')
answer = a / b;
else
Console.WriteLine("Error");
我正在为我的 class 做项目。这是一个小计算器,您输入第一个数字,然后输入第二个数字,然后选择 + - * 或 /。不幸的是有一个错误 我不知道如何修复。有什么想法吗?
你可能想在 answer
方法中做的是
if (simb == '+')
return a + b;
....
正如所描述的那样,您正在 return 从函数中获取一个值。 您不能为方法赋值。
不过,在 Pascal 中,如果我没有记错的话,return 从函数中获取值是一种有效的方法。
在 C# 中,return 值不是通过将其分配给方法名称来设置的,而是使用 return
关键字设置的。
您可以为 return 值创建局部变量。这为方法提供了一个单一的出口点,在某些情况下更清晰:
static double answer(double a, double b, char simb) {
double result;
if (simb == '+') {
result = a + b;
} else if (simb == '-') {
result = a - b;
} else if (simb == '*') {
result = a * b;
} else if (simb == '/') {
result = a / b;
} else {
Console.WriteLine("Error");
result = 0;
}
return result;
}
或者您可以 return 值直接。请注意,您将使用 return
:
static double answer(double a, double b, char simb) {
if (simb == '+') {
return a + b;
}
if (simb == '-') {
return a - b;
}
if (simb == '*') {
return a * b;
}
if (simb == '/') {
return a / b;
}
Console.WriteLine("Error");
return 0;
}
在(旧的)Basic 语言中,您 return 通过将函数值分配给函数名称来从函数中获取值。在 C# 中,您使用 return 语句。请注意,return 语句会立即终止该方法,因此您不再需要 else-cases。
static double answer(double a, double b, char simb)
{
if (simb == '+') return a + b;
if (simb == '-') return a - b;
if (simb == '*') return a * b;
if (simb == '/') return a / b;
Console.WriteLine("Error");
return 0; // There must be a return statement in non-void methods.
}
但是,我建议使用 switch 语句,而不是长的 if 链
static double answer(double a, double b, char simb)
{
switch (simb) {
case '+':
return a + b;
case '-':
return a - b;
case '*':
return a * b;
case '/':
case ':':
return a / b;
default:
Console.WriteLine("Error");
return 0;
}
}