2016-12-05 46 views
0

我知道这个计算器可以写得比我写的更简单,但我想了解它不是以我写它的方式处理属性的原因。我读了一本书,可以省略“set”访问器,但是当我这样做的时候我得到了更多的错误。我也收到Main方法错误。任何帮助,将不胜感激。 行1(CS5001),9(CS5113)和26(CS0161)。具有属性的简单C#计算器

using System; 

namespace Calculator 
{ 
class Program 
{ 
    public static void Main(string[] args) 

    { 

    public int number01; 
    public int number02; 
    public int Number03 

    { 
     get 

     { 
      return number02/number01; 
     } 
    } 

    class Program1 : Program 
    { 

     public int DivideFinal() 
     { 

      Console.Write("Enter a number to be divided: "); 
      Console.ReadKey(); 
      number01 = Convert.ToInt32(Console.ReadKey()); 
      Console.WriteLine("Enter another number to be divided"); 
      number02 = Convert.ToInt32(Console.ReadKey()); 
      Console.WriteLine("The result is: " + Number03); 
      Console.ReadKey(); 
     } 

}

} 

}

+5

从我所看到的,你的'Number03'属性在'get'访问器之后需要另一个右括号。 – ThePerplexedOne

+0

谢谢,我修正了这个问题。 – CoadA

+0

看看'double',整数除法并不是特别有用。如果你做了10/3,会打印什么? – Equalsk

回答

3

你已经离开了两次花括号,并声称一个函数返回一个int实际上没有返回。 它有助于一次修复一件事 - 事实上,一次只能编写很少的代码,随时编译。如果你看不出有什么不对的地方出了大块,并且尽量保持你的代码整齐排列,那么你可以看到你可能错过了一个支撑或类似的地方。

using System; 

namespace Calculator 
{ 
    class Program 
    { 
     public static void Main(string[] args) 
     { 

     }//<----------- 

     public int number01; 
     public int number02; 
     public int Number03 
     { 
      get 
      { 
       return number02/number01; 
      } 
     }//<---------- 

     class Program1 : Program 
     { 

      public void DivideFinal()//<---- void not int 
      { 
       Console.Write("Enter a number to be divided: "); 
       Console.ReadKey(); 
       number01 = Convert.ToInt32(Console.ReadKey()); 
       Console.WriteLine("Enter another number to be divided"); 
       number02 = Convert.ToInt32(Console.ReadKey()); 
       Console.WriteLine("The result is: " + Number03); 
       Console.ReadKey(); 
      } 
     } 

    } 
} 

右键 - 现在我们把它编译,让我们看看你有什么本质。

namespace Calculator 
{ 
    class Program 
    { 
     public static void Main(string[] args) 
     { 
     } 
    } 
} 

你有一个与预期static void Main入口点命名空间称为Program类。它没有做任何事情,所以当你运行它时,没有什么会发生。如果您在调试器中运行它,您可能会打印出“按任意键继续”。

如果你想要发生什么,它需要代码在你的入口点 - 默认这个Main函数。

您已添加一些属性到这个类,你不使用。你已经开始编写另一个类,名为Program1里面的这个类,它也继承自这个类。

请考虑改为拨打Calculator,因为这就是您要写的内容。它不需要继承你的主类 - 它们是无关的。在新文件中创建一个新班级更加简单。

启动新增类,并在其中添加属性和其他方法,如DivideFinal。 (?顺便说你为什么把它叫做DivideFinal

namespace Calculator 
{ 
    class Calculator 
    { 
     public int number01; 
     public int number02; 
     public int Number03 
     { 
      get 
      { 
       return number02/number01; 
      } 
     } 

     public void DivideFinal() 
     { 
      Console.Write("Enter a number to be divided: "); 
      Console.ReadKey(); 
      number01 = Convert.ToInt32(Console.ReadKey()); 
      Console.WriteLine("Enter another number to be divided"); 
      number02 = Convert.ToInt32(Console.ReadKey()); 
      Console.WriteLine("The result is: " + Number03); 
      Console.ReadKey(); 
     } 
    } 
} 

最后,让我们的主要功能做一些事情:

public static void Main(string[] args) 
    { 
     var calculator = new Calculator(); 
     calculator.DivideFinal(); 
    } 

这将导致一些错误,我们可以用另一种处理题。 例如,Convert.ToInt32预计为String,但您要给它的结果不是字符串Console.ReadKey。您不妨考虑使用Console.ReadLine():例如,请参阅question

+0

谢谢@doctorlove。我做了更正,但我仍然得到CS5001的编译器错误(没有有效的主入口点方法)。 – CoadA

+0

如果将此文件保存为Program.cs,它应该可以工作。或者更改应用程序属性(右键单击项目并转到属性)并选择启动对象。你的cs文件保存为什么?什么是启动对象? – doctorlove

+0

@Equalsk - 一旦我们编译完成,我可能会回来并对结构进行进一步评论。 – doctorlove