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

时间:2017-04-22 02:51:02

标签: 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 (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指定了一个值,它就可以工作..

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

4 个答案:

答案 0 :(得分:3)

你刚刚错过了构造函数中的this

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

没有它,您只需将name参数分配给自己。

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

答案 1 :(得分:2)

而不是name = name,如下所示

RandomTest2(String name) {
    name = name;
}

尝试

this.name=name;

答案 2 :(得分:1)

关于此功能:

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

编译器理解您为自己分配名称而不是RandomTest2上的名称变量。所以将其更改为this.name = name.

答案 3 :(得分:0)

类RandomTest2 - >构造方法 - > this.name = name