2017-02-02 4 views
0

나는 점수의 종류를주는 포인트로 다른 오브젝트를 "수집"하는 간단한 프로그램을 작성하려고합니다. 예를 들어, "Porsche"에는 사용자가 결정한 포인트가 주어지며 새 포인트를 입력하면 해당 포인트가 이전 값에 추가됩니다. 따라서 "Porsche"에 100 점을주고 50을 더하면 총점은 150이어야합니다.이 프로그램은 다른 차량에 대한 총 점을 저장해야합니다 (따라서 100 점의 BMW를 추가하면 합계가 있어야 함). 250 (150 포인트는 포르쉐에서 제공)).기존 포인트를 덮어 쓰지 않고 오브젝트에 포인트 추가하기

먼저 자동차에 대한 ArrayList를 살펴 본다. 그러나 새 점수를 추가하려고하면 기존 값을 새 값으로 덮어 씁니다.

System.out.println("The name of the car: "); 
    String carName = readString(); 
    Car car = findCar(carName); 

    if(car == null){ 
     System.out.println("Car doesn't exist!"); 
     return; 
    } 

    System.out.println("Add more points for the car: "); 
    car.setPoints(readInt()); 
    carlist.add(car); 

나는이 문제를 해결하는 쉬운 방법이있을 것 같아요,하지만 지금 나는 우둔 해요 내 인터넷 검색 기술이 나에게 어떤 결과를 제공하지 않습니다.

readInt()와 readString()는 내 스캐너 단지 방법

+0

'car.setPoints (car.getPoints() + readInt()); – IQV

+0

또는 간단하게'addPoint (int)'메소드를 만들면 금지되어 있지 않다. getter와 setter가 표준이지만 다른 메소드를 만들 수있다. – AxelH

+0

@IQV 감사합니다. 하하 ... 오, 그 사람이 내가 그걸 생각했으면 좋겠어 ... 따라 해 - 내가 같은 차의 중복을 만드는 것 같습니다. 점수는 업데이트해야합니다. 그러나 50을 추가 한 다음 100을 같은 객체에 추가하면 이제는 같은 자동차를 3 대 얻습니다.하지만 같은 합계를 얻습니다. 스코어가 동일한 오브젝트에만 추가되기 위해 필요한 것은 무엇입니까? – zkulltrail

답변

3

당신에게 :

public int getPoints(){ 
    return points; 
} 

그런 다음 증분 통화를 대체 여기에 세터가 있으니 정의에 따라 값을 대체하십시오.

간단한 방법으로 기존 값을 추가하는 메서드를 만들어야합니다. 당신이 원하는 경우에 당신은 음의 값 또는 다른 작업을 거부하고, 여기에 몇 가지 검증을 할 수

public void addPoint(int points){ 
    this.points += points; 
} 

:

나는 숫자 필드에 대한 간단한 문법 (꽤 표준도)를 사용합니다.

편집 :

당신은 Car car = findCar(carName);와 인스턴스을 받고, 그것이 null의 경우 아무것도하지 않는 두 번째 문제에 대한 (이것은 다른 질문을해야하지만이 작은 실수이다). 그러나 일부 포인트를 추가 한 후에는 carlist.add(car);이므로 findCar으로 제거하지 않는 한이 목록에 같은 인스턴스를 추가합니다.

+0

고마워요! 하하 ... 오, 그 사람이 내가 그걸 생각했으면 좋겠어. 다른 대답의 응답이 중복되었습니다. 후속 조치 - 동일한 자동차의 사본을 만드는 것 같습니다. 점수는 업데이트해야합니다. 그러나 50을 추가 한 다음 100을 같은 객체에 추가하면 이제는 같은 자동차를 3 대 얻습니다.하지만 같은 합계를 얻습니다. 스코어가 동일한 오브젝트에만 추가되기 위해 필요한 것은 무엇입니까? – zkulltrail

+0

@zkulltrail 그 다른 문제가 있지만 업데이트 후 차를 추가하기 때문에 이것은 논리처럼 보입니다.) findCar이 null을 반환하면 간단히 새 인스턴스를 추가 할 수 있습니다 (반환을 통해 메서드를 종료하는 대신) – AxelH

+0

다시 한번 감사드립니다!죄송합니다 모든 중복 답변, 여전히이 사이트를 learing :) 그것은 단지 carlist.add (자동차) 제거하여 일했습니다; 환호하는 친구! – zkulltrail

0

Car 클래스의 메서드를 추가입니다 :

System.out.println("Add more points for the car: "); 
car.setPoints(car.getPoints()+readInt());