печать в той же строке в Java - PullRequest
0 голосов
/ 31 мая 2010

У меня есть базовый класс Items и 3 производных класса, а в базовом классе Items у меня есть функция печати вида

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

и в каждом производном классе я вызываю функцию печати Items через super.print();, за которой следует специальная функция печати, относящаяся к производному классу.

Моя проблема в том, что всякий раз, когда печать выполняется из одного из производных классов, напечатанный текст не находится в одной строке. Так что super.print() будет в строке над производной функцией печати класса. Как мне заставить их быть на одной линии?

Ответы [ 4 ]

4 голосов
/ 31 мая 2010

Вы не можете безопасно убрать символ новой строки после того, как он был напечатан (вывод символа возврата на одну позицию работает в зависимости от терминала, но вы действительно не хотите этого делать). Я думаю, что, вероятно, логичный способ создать это - использовать одну функцию суперкласса:

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

А затем переопределить toString при необходимости:

Superclass

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

Подкласс

public String toString() {
    return super.toString() + " ... more stuff";
}
2 голосов
/ 31 мая 2010

Похоже, переопределение toString() здесь более уместно. Затем вы можете управлять печатью, где это необходимо, и она может перейти к System.out, или файлу, или регистратору, и всему остальному.

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

Тогда в дочерних классах:

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

API ссылки

Похожие вопросы

2 голосов
/ 31 мая 2010

заменить println на System.out.print

2 голосов
/ 31 мая 2010

Не делайте println на базовом классе, используйте print вместо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...