使用toString()方法时遇到问题

时间:2011-03-24 19:02:52

标签: java

我正在制作一个与热狗站保持一致并销售热狗的程序。这个程序由两个文件组成,第一个我工作正常,有热狗站类。现在我继续前进并坚持使用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改为“返回”?任何有关我做错的信息都将不胜感激。

8 个答案:

答案 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)...这是不允许的。此外,一,二和三也应该是该类的成员,而不是在主函数

中声明