java方向算法_Java中的主要方向算法

这个周末,我花了几分钟时间将一个算法转化为一个标题(以度为单位),并返回一个字符串作为基数方向(我正在使用一个Android罗盘应用程序).我最终得到的是:

private String headingToString(Float heading)

{

String strHeading = "?";

Hashtable cardinal = new Hashtable();

cardinal.put("North_1", new Float(0));

cardinal.put("Northeast", new Float(45));

cardinal.put("East", new Float(90));

cardinal.put("Southeast", new Float(135));

cardinal.put("South", new Float(180));

cardinal.put("Southwest", new Float(225));

cardinal.put("West", new Float(270));

cardinal.put("Northwest", new Float(315));

cardinal.put("North_2", new Float(360));

for (String key: cardinal.keySet())

{

Float value = cardinal.get(key);

if (Math.abs(heading - value) < 30)

{

strHeading = key;

if (key.contains("North_"))

{

strHeading = "North";

}

break;

}

}

return strHeading;

}

我的问题是,这是最好的做法吗?以前一直做过很多次,尽管我还没有在网络上搜索例子.有没有其他人尝试过这个,找到一个更完整的解决方案?

编辑The Reverand的Thilo’s,Shinjin’s和Chrstoffer的回应:

解决方案

public static String headingToString2(double x)

{

String directions[] = {"N", "NE", "E", "SE", "S", "SW", "W", "NW", "N"};

return directions[ (int)Math.round(( ((double)x % 360) / 45)) ];

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值