при выполнении ООП не может вывести строку, если еще - PullRequest
0 голосов
/ 25 апреля 2018

когда я делал if else оператор для методов get, я не могу вывести чек String в int length и хочу установить Gh на "AAAAA" код

public String getGh(){
        int length = Gh.length();
        if (length == 0){
            Gh="AAAAA";
        }else{
            Gh= null;
        }
    return this.Gh;
}
public String ShowGh() {
    return ("Title: "+this.Gh);

на выходе ничего нет, помогите пожалуйста

1 Ответ

0 голосов
/ 25 апреля 2018

Вы должны помнить, что String вполне может быть null и, следовательно,

int length = Gh.length();

будет вызывать исключение .Вот почему вы должны проверить null вручную null == Gh перед выполнением Gh.length.Я предлагаю что-то вроде этого:

private String Gh = ""; // no null but empty string by default

...

public String getGh {
  // If Gh is null or empty, assign "AAAAA"; empty otherwise
  Gh = (null == Gh || 0 == Gh.length()) 
    ? "AAAAA"
    : "";

  return Gh;
}

//TODO: Turn ShowGh() into camel case: showGh()
public String ShowGh() {
    //DONE: you probably mean "getGh()" instead of Gh
    // return ("Title: " + Gh);
    // getGh() tries to get Gh, change its value to "AAAAA" and we have "Title: AAAAA"
    return "Title: " + getGh();
}

Редактировать : если вы хотите избавиться от побочных эффектов в getGh() и реализовать логику типичным образом:

public String getGh {
  // Just return Gh value
  return Gh;
}

public String setGh(String value) {
  // If Gh is null or empty, assign "AAAAA"; empty otherwise
  Gh = (null == value || 0 == value.length()) 
    ? "AAAAA
    : value;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...