【问题标题】:Where to put the 'return' keyword in java?在java中将'return'关键字放在哪里?
【发布时间】:2020-01-18 21:03:40
【问题描述】:

以下是任务要求:

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

注意:为任务提供 nYears = 13 这就是我们的代码将被测试的内容:


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

如果我不放置返回值或返回值,则会产生错误。我真的不知道在这里做什么。提前谢谢!

【问题讨论】:

  • 您的意思是return age; 而不是return nYears;
  • 为什么age总是加13,private int getOlder;的目的是什么?
  • 只需将getOlder的方法返回值改为void,去掉“return nYears;”语句即可
  • 您的代码不完整;你的方法没有印度尼西亚的代码。
  • @ErwinBolwidt "...印度尼西亚 y ..." - 嗯...泰国 x? :)

标签: java return return-value


【解决方案1】:

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

在这段代码 sn-p 中你定义了一个方法:

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

该方法接受声明为 nYearsint 类型变量。

所以方法定义如下:

<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.
}

【讨论】:

  • 但是如果这样做,它会产生一个错误,说“错误:'void' type not allowed here System.out.println( person.growOlder( 13 ) ); and error: 'void' type not allowed此处允许 System.out.println( person.growOlder( -13 ) );
  • 那是因为您使用的 System.out.println 方法接受一个值。正如您所看到的,当您将 growOlder 方法设为 void 时,它不再返回值。使人变老,然后您可以使用 person.getAge() 获取新年龄并将此值赋予 System.out.println 方法。
  • 抱歉,我刚刚注意到您使用“test”进行的编辑。他们是否特别需要特定的测试代码?
  • 希望我的回答能帮助您理解“return”关键字的用法。
  • 是的,这就是他们用来测试我的代码的方法。是的,你的回答确实帮助我理解了“return”的用法。谢谢!但它仍然不适用于我的代码
猜你喜欢
  • 2021-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-17
  • 2011-06-18
相关资源
最近更新 更多