[英]Why does my code not put out the right answer when I use the if statement?
This is the class that contains main. 这是包含main的类。
import java.util.Random;
public class RandomTest {
public static void main(String[] args) {
String name;
Random r = new Random();
int number = 1 + r.nextInt(3);
System.out.println(number);
if (number == 1) {
name = "Kobe";
}
else if (number == 2) {
name = "Mamba";
}
else {
name = "lol";
}
RandomTest2 object = new RandomTest2(name);
System.out.println(object.toString());
}
}
This class contains other methods. 此类包含其他方法。
public class RandomTest2 {
private String name;
public RandomTest2(String name) {
name = name;
}
public String getName() {
return name;
}
public String toString() {
return getName();
}
}
If I remove the If statement and I assign a value directly to name, it works.. 如果删除If语句并直接为name分配一个值,则它将起作用。
I just want to randomly assign properties to the object. 我只想向对象随机分配属性。
You just missed a this
in your constructor: 您只是在构造函数中错过了一个
this
:
public RandomTest2(String name) {
this.name = name;
}
Without it, you are just assigning the name
parameter to itself. 没有它,您只是将
name
参数分配给它自己。
No worries, this gets every Java coder at least once ;-) 不用担心,这会使每个Java编码器至少一次;-)
Instead of name = name as shown below 代替name = name如下所示
RandomTest2(String name) {
name = name;
}
Try 尝试
this.name=name;
on this function: 关于此功能:
public RandomTest2(String name) {
name = name;
}
the compiler is understand that you assign name to itself not for the name variable on RandomTest2. 编译器了解到,您不是为RandomTest2上的name变量分配名称,而是为其本身分配名称。 So change it to
this.name = name.
因此将其更改为
this.name = name.
类RandomTest2->构造方法-> this.name = name
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.