小编Bat*_*ash的帖子

DecimalFormat在其他机器上的工作方式不同

我已经创建了一个java应用程序,我使用DecimalFormat来格式化数字的输出.

DecimalFormat df = new DecimalFormat("#.##");      
return Double.parseDouble(df.format(costs));
Run Code Online (Sandbox Code Playgroud)

它在我的计算机上工作正常,但当这个代码在另一台机器上执行时,我收到此错误:

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "25,1"
at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
at sun.misc.FloatingDecimal.parseDouble(Unknown Source)
at java.lang.Double.parseDouble(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

两台机器都安装了最新的Java版本,两者都是Windows 7.一台机器是64位,而另一台机器是32位.可能是错误仅在另一台机器上发生的原因是什么?

java

3
推荐指数
1
解决办法
335
查看次数

计算撞到倾斜的墙壁后的角度变化

我正在用 javascript 制作一个游戏,其中一个对象应该从墙壁上反弹。我真的试图让它自己工作,但它从来没有正常工作。

假设有一个球在这个笼子里弹跳(蓝色 = 30°,棕色 = 60°);

笼子里的弹跳球

球的坐标是已知的。运动角度是已知的。碰撞点 (P) 坐标是已知的。墙的角度是已知的。球的位置正在使用以下函数在 setInterval 函数中更新它的坐标:

function findNewPoint(x, y, angle, distance) {
var result = {};

result.x =(Math.cos(angle * Math.PI / 180) * distance + x);
result.y = (Math.sin(angle * Math.PI / 180) * distance + y);

return result;
Run Code Online (Sandbox Code Playgroud)

所以,在碰撞时,应该有一个函数可以适当地改变球的角度。这似乎是一个非常复杂的问题,因为即使我知道墙是 30°,知道球从哪一侧撞到墙上也很重要。我尝试使用“平面中直线上的反射”公式以及一些向量,但它对我来说从来没有奏效。我不期待代码的完整答案,如果有人可以建议应该以何种方式对其进行编程,它也会有所帮助。

编辑:感谢您的提示,我意识到是什么引起了最大的混乱;如果我用鼠标在画布上选择一个角度,则起始坐标 (0,0) 位于左下角。但是由于画布的起始坐标在左上角,所以必须考虑这一点。

基本上使用这个公式来计算角度:

function angle(cx, cy, ex, ey) {
var dy = ey - cy;
var dx = ex - cx;
var theta = Math.atan2(dy, dx);
theta *= 180 / Math.PI; …
Run Code Online (Sandbox Code Playgroud)

javascript math

1
推荐指数
2
解决办法
2811
查看次数

标签 统计

java ×1

javascript ×1

math ×1