Chr*_*ege -1 c# program-entry-point class
前两个参数似乎工作,但当我添加字符串时,我得到一个错误(第17行不能将字符串转换为double).我在这里错过了什么?从我在书中看到的所有内容来看,这似乎应该有效,所以我猜这是一个愚蠢的错误,但我一直在寻找最近3个小时的代码并且没有找到任何东西.感谢您阅读这篇文章!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication14
{
class Program
{
static void Main(string[] args)
{
SimpleCalc Calc = new SimpleCalc("{0.0}", "{0.0}", "{0}");
Console.WriteLine(Calc);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是班级
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication14
{
class SimpleCalc
{
public SimpleCalc(double num1, double num2, string oper)
{
Console.Write("Enter first integer: ");
num1 = Convert.ToDouble(Console.ReadLine());
Console.Write("Enter operator (+,-,*, / or %)");
oper = Convert.ToString(Console.ReadLine());
Console.Write("Enter second integer: ");
num2 = Convert.ToDouble(Console.ReadLine());
if (oper == "+")
Console.Write("Answer is: {0}", num1 + num2);
if (oper == "-")
Console.Write("Answer is: {0}", num1 - num2);
if (oper == "*")
Console.Write("Answer is: {0}", num1 * num2);
if (oper == "/")
Console.Write("Answer is: {0}", num1 / num2);
if (oper == "%")
Console.Write("Answer is: {0}", num1 % num2);
Console.ReadKey();
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是你的构造函数需要两个双精度数和一个字符串:
public SimpleCalc(double num1, double num2, string oper)
Run Code Online (Sandbox Code Playgroud)
但是你用三个字符串来调用它:
SimpleCalc Calc = new SimpleCalc("{0.0}", "{0.0}", "{0}");
Run Code Online (Sandbox Code Playgroud)
改为:
SimpleCalc calc = new SimpleCalc(0.0, 0.0, "{0}");
Run Code Online (Sandbox Code Playgroud)
在编译方面应该没问题.(在构造函数中与用户交互并忽略传入的参数值并不好,但这是另一回事.)
另请注意,我已将局部变量的名称从Calc更改calc为遵循正常的C#约定.