我已经建立了一个名为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;
}
}
答案 0 :(得分:3)
问题是由于您静态存储名称,这意味着Foodlist
的每个实例都访问相同的名称。
此外,你的getter和setter是静态的,所以不管你有哪个实例,它都会调用静态getter和setter。您想要删除Foodlist
类中所有内容的静态内容。
我发现您的main
课程中也有Foodlist
方法,但您不想这样做。我假设您添加了此项,以便您可以为新Foodlist
实例中的字段设置默认值。您反而希望将其替换为默认构造函数,该构造函数将以public Foodlist()
开头。