这是任务的要求:
该类应具有一个构造函数,该构造函数带有两个参数:人名的字符串值和人的年龄的整数值。
创建一个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
如果我不放置返回值或返回值,则会产生错误。我真的不知道该怎么办。先感谢您!
最佳答案
在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 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.
}