2017-11-15 30 views
1

실제 물체의 시네마틱 방정식을 시뮬레이트하려고하는데, 가속도에 따라 10 밀리 초마다 속도를 변경하고 싶습니다. 내게 효과가없는 코드 부분은 다음과 같습니다 (int 지연 = 10)Java Point 클래스 getX() 또는 getY()가 자동으로 형 변환됩니까?

public static void main(String[] args) { 
    Point velocity = new Point(); 
    Point acceleration = new Point(20.0, 0); 
    velocity.setLocation(10, 19); 

    w‌​hile (true) { 
     velocity.setLocation(velocity.getX() + 
      acceleration.getX() * 10/1000.0, 19); 
     System.out.println(velocity.getX()); 
    } 
} 

그것은이 라인 속도의 X 또는 Y를 변경하지 않습니다 (가속도의 x는 20이며이 y는 40.0입니다입니다, 경우에 그들의 범위는 내가이하는 의심 차이가 있습니다) 비정상적인입니다. 나는 가속을 인쇄 .getX() * delay/1000.0은 0.0을 출력하고 accelerator.getX()를 해당 금액으로 대체 한 후 인쇄하려고하면 실제 금액이 인쇄됩니다.

누구든지이 코드의 문제점을 알고 있습니까?
getX()가 캐스팅되었거나 자동으로 무언가입니까?

+0

입증 할만한 사례를 제공해 줄 수 있습니까? – Gendarme

+0

아니요, 질문에 [mcve]를 입력하십시오. 우리가 달릴 수있는 어떤 것. –

+2

"'acceleration.getX() * delay/1000.0'을 출력하면 '0.0'"이 출력됩니다. 복제 할 수 없기 때문에 자세한 정보를 제공해주십시오. 그러나'Point.'는 값을 정수로 저장한다는 것을 기억하십시오. 그러므로'acceleration.getX()'이'40'과'delay = 10'을 반환하면'accelerator.getX() * delay/1000.0'는' 0.2 '이다. 이것은 Point.setLocation (double, double)을 사용하여 할당 할 때'0'으로 채워집니다. –

답변

0

당신의 int로 저장됩니다

Point Documentation

점을 정의하는 값에서 볼 수 있듯이 두 번 저장하려는 경우 그래서 0.0과 1.0 (귀하의 예제의 경우와 같이) 0으로 캐스트됩니다.