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

如何在Java中从其他方法设置对象数组值?,java,arrays,object,methods,input,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 Fo

我已经建立了一个名为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);

    }
}

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

此外,您的getter和setter是静态的,所以无论您有哪个实例,它都调用静态getter和setter。您希望从
Foodlist
类中的所有内容中删除static


我看到您的
Foodlist
类中也有一个
main
方法,但您不想要这个。我假设您添加了这个,以便可以为新的
Foodlist
实例中的字段设置默认值。相反,您将希望用默认构造函数替换它,该构造函数将以
public Foodlist()

开头。您的
名称
字段肯定是
静态
。您能展示
Foodlist
的实现吗?在没有看到所有相关代码的情况下,很难给出一个好的答案。但我的第一个猜测是,您正在静态存储名称,因此
Foodlist
的所有实例都将获得相同的名称。ReturnModel应重命名为ReturnModel。大写仅用于类、枚举、接口。@Gavin在问题中添加了Foodlist代码:)@RohitJain是正确的。发布完整代码后,很明显您的name变量是
static
    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;
    }
}