Куда поместить ключевое слово return в java? - PullRequest
0 голосов
/ 19 января 2020

Вот требования к задаче:

  • Класс должен иметь конструктор, который принимает два аргумента: строковое значение для имени человека и целочисленное значение для возраста человека.
  • Создайте метод toString, который возвращает имя и возраст человека. Значения должны быть разделены пробелом.
  • Создайте методы getName () и getAge (), чтобы вернуть имя и возраст человека.
  • Создайте метод growOlder (nYears) для увеличьте возраст человека на nYears (целое число).
  • В методе growOlder (nYears) значение nYears должно быть гарантировано, что оно является положительным значением. При положительном значении (включая нулевое значение) возраст человека должен быть увеличен, и метод должен возвращать значение true (чтобы указать, что изменение значения было завершено). Если значение nYears является отрицательным, возраст не должен изменяться, и метод должен возвращать значение false (чтобы указать, что изменение значения не произошло).

Примечание: nYears = 13 Для этой задачи будет проверен наш код: enter image description here


Пока у меня есть следующий код, и он работает, но у меня возникли проблемы с его завершением, потому что ключевого слова return

public class Person{

    private String name;
    private int age;
    private int getOlder;

    public Person(){
        this("Otto", 25);
    }
    public Person( String name, int age ){
        this.name = name;
        this.age = age;
    }
    public String getName(){
        return name;
    }
    public int getAge(){
        return age;
    }
    public int growOlder(int nYears){

        if(nYears >= 0){
            age = age + 13;
            System.out.println("true");

        }else{
            System.out.println("false");
        }
       return nYears; //ERROR
    }

    public String toString( ){
        return getName() + " " + getAge();

    }
}

Я должен получить результаты вроде:

Otto 25
true
Otto 38
false
Otto 38

Но с этим кодом я получу следующие результаты:

Otto 25
true
13
Otto 38
false
-13
Otto 38

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

1 Ответ

1 голос
/ 19 января 2020

В java есть части кода, называемые методами. (Методы иногда называют функциями.)

В этом фрагменте кода вы определили метод:

public int growOlder(int nYears){
    if(nYears >= 0){
        age = age + 13;
        System.out.println("true");

    }else{
        System.out.println("false");
    }
   return nYears; //ERROR
}

Этот метод publi c доступен из кода вне класса.

Метод return sa значение типа int .

Метод называется growOlder .

Метод принимает переменную типа int , объявленную как nYears .

Таким образом, методы определяются следующим образом:

<visibility> <return type> <name>    <parameters>
   public         int     growOlder  (int nYears)

Оператор return используется для выхода из метода. Когда метод определен с типом возврата (любым, кроме void), обязательно, чтобы все пути кода в методе имели оператор return вместе со значением, которое он возвращает.

Давайте посмотрим на ваш метод еще раз и посмотрите, как заставить работать вывод, когда вы будете sh.

   public int growOlder(int nYears){

        if(nYears >= 0){
            age = age + 13;
            System.out.println("true");

        }else{
            System.out.println("false");
        }
       return nYears; //ERROR
    }

Выглядит так, как будто вы печатаете true и false вместо его возврата.

Действие здесь изменить тип возвращаемого значения с int на логический и заменить System.out.println() на return true и return false.

После этого изменения мы можем сжать способ донести наше сообщение более четко:

public boolean growOlder(int nYears){
    age += nYears; //Add nYears to age and update its value
    return nYears >= 0; //Return the value of the expression "is nYears greater than or equal to 0" yes results in true, no results in false.
}
...