如何在Java中设置其他方法的对象数组值?

时间:2015-04-15 18:21:53

标签: java arrays object methods input

我已经建立了一个名为Foodlist的类,其中包括setter和getter。 我的问题是,没有在每个Flist [i]数组中设置该值。

打印时我期望每个Flist [i] .getName的输出不同。但相反,getName会从setName中获取最后一个值。

这是我的代码:

public static void main (String[] args)
{
    Scanner input = new Scanner (System.in);
    Foodlist [] Flist = new Foodlist [3];

    for (int i = 0 ; i <Flist.length; i++)
    {
        Flist[i] = new Foodlist();
    }

    ReturnModel(Flist);

    for (int i = 0; i <Flist.length; i++)
    {
        System.out.println("Model is "+ Flist[i].getName());
    }

}

static void ReturnModel (Foodlist[] Flist)
{

    Scanner input = new Scanner (System.in);
    for (int i = 0; i < Flist.length; i ++)
    {
        String temp;
        System.out.println("Enter Food Name Please:");
        temp = input.next();
        Flist[i].setName(temp);

    }
}

我的食物清单代码。

    public class Foodlist
{
   static String Name;
   static int Price;
   static String Desc;

   public static void main (String [] args)
   {
       String nem;
       int pris;
       String des;

       nem = "";
       pris = 0;
       des ="";

       setName(nem);
       setPrice (pris);
       setDesc (des);


    }

    public static void setName (String nem)
    {
        Name = nem;
    }

    public static String getName()
    {
        return Name;
    }

    public static void setPrice (int  pris)
    {
        Price = pris;
    }

    public static int getPrice ()
    {
        return Price;
    }

    public static void setDesc (String des)
    {
        Desc = des;
    }

    public static String getDesc()
    {
        return Desc;
    }
}

1 个答案:

答案 0 :(得分:3)

问题是由于您静态存储名称,这意味着Foodlist的每个实例都访问相同的名称。

此外,你的getter和setter是静态的,所以不管你有哪个实例,它都会调用静态getter和setter。您想要删除Foodlist类中所有内容的静态内容。

我发现您的main课程中也有Foodlist方法,但您不想这样做。我假设您添加了此项,以便您可以为新Foodlist实例中的字段设置默认值。您反而希望将其替换为默认构造函数,该构造函数将以public Foodlist()开头。