2017-04-22 45 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 =名稱

相關問題