Java 为什么我的代码在使用if语句时没有给出正确的答案?

Java 为什么我的代码在使用if语句时没有给出正确的答案?,java,Java,这是包含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

这是包含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());
    }
}
此类包含其他方法

public class RandomTest2 {

    private String name;

    public RandomTest2(String name) {
        name = name;
    }

    public String getName() {
        return name;
    }

    public String toString() {
        return getName();
    }
}
如果我删除If语句并直接为name赋值,它就会工作


我只想随机为对象分配属性。

您刚刚在构造函数中遗漏了一个

public RandomTest2(String name) {
    this.name = name;
}
没有它,您只需将
名称
参数分配给自身


不用担心,这会让每个Java编码人员至少获得一次;-)

而不是name=name,如下所示

RandomTest2(String name) {
    name = name;
}
试一试

关于此功能:

public RandomTest2(String name) {
    name = name;
}

编译器应该理解,您为自己指定名称,而不是为RandomTest2上的name变量指定名称。因此,将其更改为
this.name=name.
classrandomtest2->constructor method->this.name=name

不,它从来没有得到我。(再说一次,在我学习Java之前,我已经编写了35年的程序并致力于维护一个编译器,所以我很明显,这不可能奏效。)@ajb bravoooo
public RandomTest2(String name) {
    name = name;
}