2012-11-21 69 views
1
class Bil 
{ 
    public string regnr 
    { 
     get { return regnr; } 
     set { regnr = value; } 
    } 

    public string maerke 
    { 
     get { return maerke; } 
     set { maerke = value; } 
    } 

    public int vaegt 
    { 
     get { return vaegt; } 
     set { vaegt = value; } 
    } 

    public bool traek 
    { 
     get { return traek; } 
     set { traek = value; } 
    } 

    public Bil(string regnr, string maerke, int vaegt, bool traek) 
    { 
     this.regnr = regnr; 
     this.maerke = maerke; 
     this.vaegt = vaegt; 
     this.traek = traek; 
    } 

    public double StatsAfgift(int vaegt, bool traek) 
    { 
     this.vaegt = vaegt; 
     this.traek = traek; 
     double statsAfgift = 0; 
     if (vaegt <= 800) 
      statsAfgift = vaegt * 50; 
     else if (vaegt > 800) 
      statsAfgift = 800 * 50 + 75 * vaegt - 800; 
     if (traek == true) 
      statsAfgift = statsAfgift + 200; 
     return statsAfgift; 
    } 
} 

Bil Honda = new Bil("225689", "Honda", 500, true); 
Console.WriteLine("Statsafgiften på bilen er afsat til: {0:C}", Honda.StatsAfgift(500, true)); 
Bil Citroen = new Bil("985632", "Citroen", 400, false); 
Bil Peugeot = new Bil("125697", "Peugeot", 650, true); 

Bil[] bilSamling = new Bil[3]; 
bilSamling[0] = Honda; 
bilSamling[1] = Citroen; 
bilSamling[2] = Peugeot; 


foreach (Bil b in bilSamling) 
{ 
    Console.WriteLine("Statsafgift på {0} er {1}", b.maerke, b.StatsAfgift(b.vaegt, b.traek)) 
} 

只是为了澄清,bil = car。 Statsafgift =税。 Vaegt =体重,maerke =品牌,regnr =注册号码。打印对象阵列

我需要打印出数组中的对象以及每个对象的计算税额。尝试编译代码时,我也遇到了一些堆栈溢出错误。

+0

This is C#?你应该用你需要帮助的编程语言来标记你的问题。 – Paulpro

+0

而语言是什么? –

+0

对不起。这个庞然大物是C#。 – Leth

回答

2

问题是

public string regnr 
      { 
       get { return regnr; } 
       set { regnr = value; } 
      } 

尽量使用自动属性,而不是

public string Regnr { get; set; } 

溢出时提出您尝试分配regnr = value;为目的,你应该使用其他变量那样:

private string _regnr; 

public string Regnr 
{ 
     get { return _regnr; } 
     set { _regnr = value; } 
} 
+0

非常感谢!这似乎工作。 – Leth

1

那么你的stackoverflow错误来自你的属性。您需要定义一个本地私有变量来保存它们(因为它们当前正在调用它们自己)或者更好地将它们定义为自动属性;

public bool traek { get; set; } 

看起来你不需要传递参数,因为它们已经在对象上了;

public double StatsAfgift() // don't need params heere 
{ 
    double statsAfgift = 0; 
    if (vaegt <= 800) 
     statsAfgift = vaegt * 50; 
    else if (vaegt > 800) 
     statsAfgift = 800 * 50 + 75 * vaegt - 800; 
    if (traek == true) 
     statsAfgift = statsAfgift + 200; 
    return statsAfgift; 
} 

允许你只是做;

Console.WriteLine("Statsafgift på {0} er {1}", b.maerke, b.StatsAfgift()); 

你甚至可以像没有foreach循环那样做;

Console.WriteLine(String.Join("\n", bilSamling.Select(b => String.Format("Statsafgift på {0} er {1}", b.maerke, b.StatsAfgift()))));