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不仅对于此方法,而且对于每个声明为返回值的方法