Java toString () Как вернуть строковое сообщение вместо нуля - PullRequest
0 голосов
/ 01 февраля 2020

Как я могу напечатать сообщение об ошибке «String» в поле, которое возвращает ноль? Вот что я пытаюсь сделать:
Когда передается объект животного, метод toString() должен возвращать строку, которая выглядит следующим образом.

Name: "fluffy"
Breed: Pitbull
Age: Data not available

Как вы можете видеть из приведенного выше примера Строка содержит метку для каждого поля, затем двоеточие и данные, хранящиеся в этом поле. Я могу напечатать строку, как в примере ниже (обратите внимание, что возраст пропускает данные, потому что они нулевые)

Name: "fluffy"
Breed: Pitbull
Age: 

Я написал toString() метод, подобный этому

    public String toString() {
        return "\n" +
                "\nName: " + this.name +
                "\nBreed: " + this.breed +
                "\nAge: " + this.age +
                "\n";
}

Когда поле пустое или пустое, я хочу заменить данные на «Данные недоступны» сообщение

Я пытался использовать условные операторы

@Override
    public String toString() {
    String errorMessage = "Data not available";
        if (name == null){
            System.out.println(errorMessage);
        }
        if (breed == null){
            System.out.println(errorMessage);
        }...

Я также пытался циклически проходить через a для каждого

    @Override
    public String toString() {
      for (String field: fields)
            if (field != null) {
        return "\n" +
                "\nName: " + this.name +
                  "\nBreed: " + this.breed +
                  "\nAge: " + this.age +
                  "\n";
    }
}
            } else (field == null){
                return "Data not available";
            }

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

Заранее спасибо за вашу помощь! Я новичок в программировании, и я действительно ценю всех людей, которые помогли мне понять на этом пути.

Ответы [ 2 ]

2 голосов
/ 01 февраля 2020
class Dog {

    private static final String DEFAULT_MESSAGE = "No Data Available";

    private final String name;

    private final String breed;

    private final Integer age;

    public Dog(String name, String breed, Integer age) {
        this.name = name;
        this.breed = breed;
        this.age = age;
    }

    @Override
    public String toString() {
        return String.format("name=%s\nbreed=%s\nage=%s",
                name == null ? DEFAULT_MESSAGE : name,
                breed == null ? DEFAULT_MESSAGE : breed,
                age == null ? DEFAULT_MESSAGE : age);
    }
}
0 голосов
/ 01 февраля 2020

Вам нужно объединить две попытки.

public String toString() {
    String errorMessage = "Data not available";
    String n = name;
    if (n == null) n = errorMessage;

    String b = breed;
    if (b == null) b = errorMessage;

    String a = age;
    if (a == null) a = errorMessage;

    return "\n" +
          "\nName: " + n +
          "\nBreed: " + b +
          "\nAge: " + a +
          "\n";
}
...