为什么我的代码在initialAge = age;
上出错?
当我在线查看解决方案时,应将其替换为age = initialAge
。 A = B
和B = A
一样吗?
public class Person {
private int age;
public Person(int initialAge) {
if (initialAge >=0){
initialAge = age;
}else if( initialAge < 0){
age =0;
System.out.println("Age is not valid, setting age to 0.");
}
// Add some more code to run some checks on initialAge
}
public void amIOld() {
// Write code determining if this person's age is old and print the correct statement:
if (age < 13){
System.out.println("You are young.");
} else if ( age >= 13 && age < 18){
System.out.println("You are a teenager.");
}else {
System.out.println("You are old.");
}
}
public void yearPasses() {
age++;
// Increment this person's age.
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
for (int i = 0; i < T; i++) {
int age = sc.nextInt();
Person p = new Person(age);
p.amIOld();
for (int j = 0; j < 3; j++) {
p.yearPasses();
}
p.amIOld();
System.out.println();
}
sc.close();
}
}
答案 0 :(得分:1)
在Java中,变量分配为right-to-left associative。对于您的理论示例,在分配上下文中,A = B
意味着B
的值现在存储在A
中。将其交换表示A
的值存储在B
中。
使用==
运算符执行数学等价运算。 =
总是表示分配。
关于您的代码为何与initialAge = age
错误-initialAge
是一个参数,在方法返回后它的值会丢失,因此重新分配它是有争议的。您的字段age
的默认值为0,因为它没有获取initialAge
的值。