我正在制作一个与热狗站保持一致并销售热狗的程序。这个程序由两个文件组成,第一个我工作正常,有热狗站类。现在我继续前进并坚持使用toString()
方法,它一直告诉我这是表达式的非法开始。我仍然是toString方法的新手,我很困惑为什么会这么说。这是代码
public class TheHotDogStands
{
public static void main(String[]args)
{
HotDogStand one = new HotDogStand ("Bob's hotdog stand" , "0081" , "5");
HotDogStand two = new HotDogStand ("Chris's hotdog stand" , "4591" , "3");
HotDogStand three = new HotDogStand ("Matt's hotdog stand" , "1171" , "10");
public String toString()
{
System.out.println("Total sold =" + (one.getNumSold() + two.getNumSold() + three.getNumSold()) + "\n");
}
one.SetJustSold();
two.SetJustSold();
three.SetJustSold();
System.out.println(one.getName + one.getID + one.getNumSold);
System.out.println(two.getName + two.getID + two.getNumSold);
System.out.println(three.getName + three.getID + three.getNumSold);
System.out.println("Total sold for all stands = " + (one.getNumSold() + two.getNumSold() + three.getNumSold()));
public one(one aOne)
{
nameHotDogStand = aNameHotDogStand;
IDnumber = aIDnumber;
hotDogsSold = aHotDogsSold;
}
}
我是否需要将System.out.println
改为“返回”?任何有关我做错的信息都将不胜感激。
答案 0 :(得分:2)
它是一个复制粘贴错误,或者你的ToString函数定义了 INSIDE 主要功能。你不能这样做。把它放在main()
之外答案 1 :(得分:2)
您正尝试在另一种方法的正文中定义toString()
。您不能在另一个方法中定义一个方法。 one()
方法也是如此。
toString()
旨在为您提供给定对象的字符串表示形式。在您的案例中,唯一可以定义toString()
的地方是HotDogStand
类。 toString()
会提供有关特定展位的信息。
请注意,toString()
应主要用于调试目的,而不是用于决定程序流程。
答案 2 :(得分:2)
toString()期望你返回一个String,并在main()方法中声明它。
答案 3 :(得分:1)
我是否需要将System.out.println转为“返回”? <<是的,toString方法总是返回一个String,但是,你的toString方法必须在main方法之外
答案 4 :(得分:1)
是的,您宣布toString
返回String
并且您没有返回任何内容(也就是说,您错过了return
语句。
显然,这并不禁止你只是打印,但它消除了toString
方法的目的,即返回对象的人类可读(和可打印)表示。
此外,您正在另一个方法中定义一个方法。
答案 5 :(得分:1)
你是对的。 toString()方法不会在屏幕上打印某些内容,但会返回对象的字符串表示形式(如您所决定的那样)。
答案 6 :(得分:1)
public class TheHotDogStands
{
public static void main(String[]args)
{
HotDogStand one = new HotDogStand ("Bob's hotdog stand" , "0081" , "5");
HotDogStand two = new HotDogStand ("Chris's hotdog stand" , "4591" , "3");
HotDogStand three = new HotDogStand ("Matt's hotdog stand" , "1171" , "10");
one.SetJustSold();
two.SetJustSold();
three.SetJustSold();
System.out.println(one.getName + one.getID + one.getNumSold);
System.out.println(two.getName + two.getID + two.getNumSold);
System.out.println(three.getName + three.getID + three.getNumSold);
System.out.println("Total sold for all stands = " + (one.getNumSold() + two.getNumSold() + three.getNumSold()));
}
public String toString()
{
return "Total sold =" + (one.getNumSold() + two.getNumSold() + three.getNumSold()) + "\n";
}
public one(one aOne)
{
nameHotDogStand = aNameHotDogStand;
IDnumber = aIDnumber;
hotDogsSold = aHotDogsSold;
}
}
这就是您希望文件的样子。
正如人们所说:
不要在函数内声明函数。
toString应该返回一个String,而不是打印它。
你的一个功能看起来也很奇怪。你应该把“one”类大写,那些aNameHotDogStand,aIDnumber,aHotDogsSold很奇怪,你可能想从object参数中获取它们,但我不知道你要做什么,所以很难说..
实际上,你的toString也是错误的。在你的主要内部实例化一个,两个和三个,它们在它外面是不可访问的。您希望在类中声明它们(作为成员)以在其他地方重用它们。
我真的很想知道你在这里做的一个功能是什么......什么是nameHotDogStand,IDnumber,hotDogsSold?这是整个代码吗?
答案 7 :(得分:0)
您正在尝试在函数(main)中声明新函数(toString,one)...这是不允许的。此外,一,二和三也应该是该类的成员,而不是在主函数
中声明