2016-12-05 52 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