-4

このエラーが発生している以下のコードを強調表示しました。私がしたいのは、の値がnserved4以下の場合は値を返しますが、4より大きい場合は値をデフォルトで0にします。

PSプログラミングを始めて間もないので、コードをできるだけシンプルにしようとしています。ご協力ありがとうございました。

public class FoodItem
{
    private String Name;
    private String Description;
    private int NumberServed;
    private double Cost;

    public FoodItem(String fname, String fdescription, int nserved, double fcost)
    {
        Name = fname;
        Description = fdescription;
        NumberServed = nserved;
        Cost = fcost;
    }

     public string getFoodName()
     {
         return Name;
     }

     public void setFoodName(string fname)
     {
         Name = fname;
     }

     public string getFoodDescription()
     {
         return Description;
     }

     public void setFoodDescription(string fdescription)
     {
         Description = fdescription;
     }

     public int getNumberPeople()
     {
         return NumberServed;
     }

     public void setNumberPeople(int nserved)
     {
         NumberServed = nserved;

         // Checks to see if the maximum number of people has been exceeded.
         if (nserved <= 4)
         {
             return nserved;
         }
         else
         {
             return 0;
         }
     }

     public double getFoodCost()
     {
         return Cost;
     }

     public void setFoodCost(double fcost)
     {
         Cost = fcost;
     }
}
4

3 に答える 3

0

まず、何も返さない ( is void) と宣言し、渡された数値にプライベート フィールドを設定し、制約された値を返そうとする奇妙なメソッドがあります。以下は、あなたが求めているものである可能性があります。

 public void setNumberPeople(int nserved)
 {
     if (nserved <= 4)
     {
         NumberServed =  nserved;
     }
     else
     {
         NumberServed = 0;
     }
 }

ただし、これは長ったらしいコードであり、次のようにより適切に表現できます。

 public void setNumberPeople(int nserved)
 {
     NumberServed = (nserved <= 4) ? nserved : 0;
 }

最後に、クラス全体は、Java を知っていて、C# コンパイラ用に Java を書いているように見えます。C# はファーストクラスのプロパティをサポートしており、全体を次のように書き換えることができます。

public class FoodItem
{
    private int numberServed;

    public FoodItem(String fname, String fdescription, int nserved, double fcost)
    {
        FoodName = fname;
        FoodDescription = fdescription;
        NumberPeople = nserved;
        FoodCost = fcost;
    }

    public string FoodName { get; set; }
    public string FoodDescription { get; set; }
    public int NumberPeople() { get; set; }
    public double FoodCost { get; set; }

    public int NumberPeople
    {
        get { return numberServed; }
        set { numberServed = value <= 4 ? value : 0; }
    }
}
于 2013-11-11T20:36:45.117 に答える