这到底有什么问题?
public void changeElement(String isAdd, double Element, int timesBy, int lowCap) {
ran = Math.floor(Math.random()*timesBy)+lowCap;
if(isAdd == "+"){
if((Element + ran) > 100){
ran -= ((Element + ran)-100);
};
Element += ran;
}else{
if((Element - ran) < 0){
ran -= (ran - Element);
};
Element -= ran;
};
Elementi = (int)Element;
ranI = (int)ran;
}
我知道数学有效,因为我将"Element"标签更改为我一直使用的双精度,那么为什么它没有像它想要的那样更改真正的双精度。
我想你的意思是它不会改变你传递给参数的值?
如果是这样的话,Java是pass by value
,而不是pass by reference
。
将参数的引用传递给方法,而是传递参数的副本。您的方法更改了副本,但一旦该方法结束,副本就会超出范围并被垃圾回收。
那么解决方案是什么?
将方法签名更改为double
并返回 Element。然后在调用函数时将 Element 设置为返回值。
也请阅读此相关答案。