2017-04-22 1 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()); 
    } 
} 

이 클래스에는 다른 방법이 있습니다. 내가 If 문을 제거하고 나는 이름에 값을 직접 할당하면, 작동

public class RandomTest2 { 

    private String name; 

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

    public String getName() { 
     return name; 
    } 

    public String toString() { 
     return getName(); 
    } 
} 

.. 난 그냥 무작위로 객체에 속성을 할당 할

. , 그게 없으면

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

당신은 단지 자체에 name 매개 변수를 할당됩니다

답변

3

당신은 당신의 생성자에서 this를 놓쳤다.

걱정이이 기능에

this.name=name; 
+0

아니를, 나 없었어. (다시 한번, 나는 자바를 배우기 전에 35 년 동안 프로그래밍을 해왔고 컴파일러를 유지 관리했기 때문에 이것이 작동하지 않았다는 것이 분명했다.) – ajb

+0

@ajb bravoooooo –

2
대신 이름의

= 이름을 ;-) 가져옵니다

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

컴파일러 RandomTest2에서 이름 변수가 아닌 이름을 자체에 할당한다는 것을 이해합니다. > 생성자 메서드 - - 그래서 this.name = name.

1

을 시도

RandomTest2(String name) { 
    name = name; 
} 

아래와 같이 모든 자바 코더가 적어도 한 번

0

클래스에 RandomTest2 변경> this.name = 이름

관련 문제