b라는 변수 생성후
add함수를 통해 b변수를 ArrayList에 넣었는데
Log값으로 두값을 읽어보니
분명 b변수에는 제대로된 값이 들어갔는데
b값을 넣은 ArrayList형에는 종종 다른값이 출력되더라고요
b값을 넣었는데 왜 b변수와는 다른 값이 나오는지
전혀 이해가 안되어서 그런데 뭘 잘못한건지 가르침 부탁드립니다ㅠㅠ
답변 주시면 정말 감사하겠습니다
코드 첨부합니다
static ArrayList<Integer>final_truebearing_list=new ArrayList();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
for(int i=0;i<lat_list.size();i++){
Integer b =new Integer(Integer.parseInt(String.valueOf(Math.round(getTrue_bearing())))); //getTrue_bearing 은 double 형을 반환하는 함수입니다
final_truebearing_list.add(new Integer(b));
if(final_truebearing_list.get(i).equals(b)){
Log.i("save","right-distance");
} else{
Log.i("save","truebearing"+b);
Log.i("save","truebearing"+final_truebearing_list.get(i));
}
}
public double getTrue_bearing() {
if (myLocation != null) {
latPoint = myLocation.getLatitude();
lngPoint = myLocation.getLongitude();
//거리 구하기
float[] dist=new float[3];
Location.distanceBetween(lat, lon, latPoint, lngPoint, dist);
distance = dist[0]/1000;
distance = Float.parseFloat(String.format("%.3f", distance));
//각도 구하기
Cur_Lat_radian = latPoint * (3.141592 / 180);
Cur_Lon_radian = lngPoint * (3.141592 / 180);
Dest_Lat_radian = lat * (3.141592 / 180);
Dest_Lon_radian = lon * (3.141592 / 180);
radian_distance = Math.acos(Math.sin(Cur_Lat_radian) * Math.sin(Dest_Lat_radian) + Math.cos(Cur_Lat_radian)* Math.cos(Dest_Lat_radian)* Math.cos(Cur_Lon_radian - Dest_Lon_radian));
radian_bearing = Math.acos((Math.sin(Dest_Lat_radian) - Math.sin(Cur_Lat_radian)* Math.cos(radian_distance))/ (Math.cos(Cur_Lat_radian) * Math.sin(radian_distance)));
//목적지 이동방향을 구한다.(현재 좌표에서 다음 좌표로 이동하기 위해서는 방향을 설정해야한다. 라디언값이다.
//acos의 인수로 주어지는 x는 360분법의 각도가 아닌 radian(호도)값이다.
if (Math.sin(Dest_Lon_radian - Cur_Lon_radian) < 0) {
true_bearing = radian_bearing * (180 / 3.141592);
true_bearing = (360 - true_bearing);
} else {
true_bearing = (radian_bearing * (180 / 3.141592));
}
} return true_bearing;
}