这是任务的要求:


该类应具有一个构造函数,该构造函数带有两个参数:人名的字符串值和人的年龄的整数值。
创建一个toString方法,该方法返回人员的姓名和年龄。值必须用空格隔开。
创建getName方法()和getAge()方法以返回人员的姓名和年龄。
创建growOlder(nYears)方法以将人的年龄增加nYears(整数)。
在growOlder(nYears)方法中,必须确保nYears的值是正值。为正值(包括零值)时,应增加人员的年龄,并且该方法应返回值true(以指示值更改已完成)。如果nYears的值为负,则年龄不会发生变化,并且该方法应返回值false(以指示未发生值变化)。


注意:为该任务提供了nYears = 13
这是我们的代码将在以下位置进行测试:
java - 在Java中将“return”关键字放在哪里?-LMLPHP



到目前为止,我有以下代码,但是它可以工作,但是由于“ 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


如果我不放置返回值或返回值,则会产生错误。我真的不知道该怎么办。先感谢您!

最佳答案

在Java中,有一些代码称为方法。 (方法有时也称为函数。)

在此代码段中,您定义了一个方法:

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

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


该方法可以从类外部的代码公开访问。

该方法返回int类型的值。

该方法称为growOlder。

该方法接受声明为nYears的int类型的变量。

因此,方法通过以下方式定义:

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


return语句用于退出方法。当使用返回类型(除void以外的任何其他类型)定义方法时,该方法中的所有代码路径都必须具有return语句及其返回值。

让我们再次看一下您的方法,看看如何使输出如您所愿。

   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更改为boolean,并将System.out.println()替换为return truereturn 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.
}

08-19 10:42