开发者

printing in the same line in java

I have a base class called Items and 3 derived classes,开发者_如何学编程 and within the Items base class i have a print function of the form

public void print(){
        System.out.println("ID " + id + " Title " + title + " <" + year + "> ");
    }

and within every derived class I call the Items print function through super.print(); which is followed by a specific print function relating to the derived class.

My problem is, whenever the printing is executed from one of the derived classes the printed text is not on the same line. So super.print() will be in the line above the derived class print function. How do I get them both to be on the same line?


You can't safely retract a newline after it's been printed (outputting a backspace character works depending on the terminal, but you really don't want to do that). I think probably the logical way to architect this is have one superclass function:

public void print() {
    System.out.println(toString());
}

And then override toString as needed:

Superclass

public String toString() {
    return "ID " + id + " Title " + title + " <" + year + "> ";
}

Subclass

public String toString() {
    return super.toString() + " ... more stuff";
}


Do not do println on the base class use print instead


replace println with System.out.print


It looks like overriding toString() is more appropriate, here. You can then control the printing where it's needed, and it can go to System.out, or a file, or a logger, and everything else.

@Override public String toString() {
   return String.format("ID %s Title %s <%d> ", id, title, year);
}

Then in the child classes:

@Override public String toString() {
   return super.toString() + " whatever";
}

API links

  • Object.toString()

Related questions

  • toString() in Java
  • Is toString() only useful for debugging?
  • when to use toString() method
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜