Java 使用toString()方法时遇到问题
我正在制作一个与热狗摊保持同步并出售热狗的节目。这个程序由两个文件组成,第一个我很好地工作了,里面有热狗站类。现在,我继续前进,并停留在一个Java 使用toString()方法时遇到问题,java,Java,我正在制作一个与热狗摊保持同步并出售热狗的节目。这个程序由两个文件组成,第一个我很好地工作了,里面有热狗站类。现在,我继续前进,并停留在一个toString()方法上,它一直告诉我这是表达式的非法开始。我对toString方法还是相当陌生的,我不明白为什么它会这么说。这是密码 public class TheHotDogStands { public static void main(String[]args) { HotDogStand one = new HotDogStan
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
改为“return”?任何关于我做错了什么的信息都将不胜感激。我需要将System.out.println改为“return”吗 要么是复制粘贴错误,要么是在主函数中定义了ToString函数。你不能那样做。将它放在main()之外。您正试图在另一个方法的主体中定义toString()
。不允许在另一个方法中定义一个方法。one()
方法也是如此
toString()
旨在为您提供给定对象的字符串表示形式。在您的案例中,唯一可以定义toString()
的地方是HotDogStand
类。在那里,toString()
将提供有关特定展位的信息
请注意,
toString()
应主要用于调试目的,而不是决定程序流。是的,您声明了toString
以返回一个字符串,但未返回任何内容(即缺少return
语句)
显然,这并不禁止您仅打印,但它验证了toString
方法的目的,即返回一个对象的可读(和可打印)表示
另外,您正在另一个方法中定义一个方法。toString()希望您返回一个字符串,并且它在main()方法中被声明。您是对的。toString()方法不会将某些内容打印到屏幕上,而是返回一个字符串表示形式(根据您的决定)对象的。您试图在函数(main)中声明新函数(toString,1)…这是不允许的。另外,1、2和3也应该是类的成员,而不是在主函数中声明
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应该返回字符串,而不是打印它
- 你的一个函数看起来也很奇怪。你应该大写“一”类,而那些aNameHotDogStand、aIDnumber、AhotdogSeld都很奇怪,你可能想从object参数中获取它们,但我不知道你想做什么,所以很难说
实际上,您的toString也是错误的。1、2和3在您的main中实例化,它们在main之外不可访问。您希望在类中声明它们(作为成员),以便在其他地方重用它们
我真的很想知道你的一个函数在这里做什么…hotdogstand,IDnumber,hotDogsSold是什么名字?这是全部代码吗?这似乎是Java,所以我给它加了这样的标签。它必须返回一个字符串
。好的,谢谢,我已经移动了toString,一部分。我发现很容易忘记它不能进入主方法.谢谢你的帮助,我看到了,所以我们基本上总是需要这个方法的返回语句。Thanks@Saudadenaru不仅对于此方法,而且对于每个声明为返回值的方法