쉽게 배우는 자바 프로그래밍(우종정) 프로그래밍 문제 풀이 4장 - 4번

2019. 12. 4. 17:27쉽게 배우는 자바 프로그래밍

  class Car {
    private String color;
    static int numOfCar = 0;
    static int numOfRedCar = 0;


      public Car(String color) {
        this.color = color;
        numOfCar++;

        if (color.equalsIgnoreCase("red")) 
           numOfRedCar++;
    }
    
     static public int getNumberOfCar() {
        return numOfCar;
     }

      static public int getNumberOfRedCar() {
          return numOfRedCar;
      }
}
    public class CarTest {
    public static void main(String[] args) {
        Car c1 = new Car("red");
        Car c2 = new Car("blue");
        Car c3 = new Car("RED");

        System.out.printf("자동차 수 : %d, 빨간색 자동차 수 : %d", Car.getNumberOfCar(), 
        Car.getNumberOfRedCar());
    }
}

if (color == "red" || color == "RED") 
           numOfRedCar++;

 

if문을 좀 더 잘 쓸 수 있을 것 같은데.. 우선 결과는 맞게 나오지만.....

만약 reD나 Red 같은 색깔이 지정된다면 어떻게 할 것인가.. 그리고 ==... 이거 주소값 비교로 알고있는데 그냥 써버렸다

다른 방법을 검색해보자!

 

equals가 string에서 값 비교로 쓸 수 있다는 정보를 얻었다

if (color == "red" || color == "RED")
           numOfRedCar++;

if (color.equals("red") || color.equals("RED"))
           numOfRedCar++;

으로 바꿀 수 있다.

 

그리고 red와 RED를 비교할 필요 없이 equalsIgnoreCase("red")하면 된다!

대,소문자 필요없이 내용이 똑같은 지 검사하는 메소드이다

 

제일 좋은 코드는 아마... 이렇지 않을까

if (color.equalsIgnoreCase("red")) 
           numOfRedCar++;