2017-04-22 21 views
2

这是包含main的类。当我使用if语句时,为什么我的代码不能提供正确的答案?

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语句和我直接赋值来命名,它的工作原理..

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

回答

3

你只是错过了你的构造一个this

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

没有它,你只是分配name参数本身。

不用担心,这得到每一个Java编码至少一次;-)

+0

不,它从来没有得到我。 (然后,我再次编程了35年,并在学习Java之前一直在维护一个编译器,所以对我来说这显然不可行)。 – ajb

+0

@ajb bravoooooo –

2

而不是name =名称如下图所示

RandomTest2(String name) { 
    name = name; 
} 

此功能尝试

this.name=name; 
1

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

编译器明白你为RandomTest2上的name变量指定了名称。因此,将其更改为this.name = name.

0

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

相关问题