java 方法中的变量 返回的时候变量值没有改变

这个问题说起来有点复杂我的方法:privatePotcheckDistans(Potpot,doublemx,doublemy,intchNum,doubles,Potm... 这个问题说起来有点复杂 我的方法:
private Pot checkDistans(Pot pot,double mx
,double my,int chNum,double s,Pot maxPot) {
/*
* pot起始点
* mx x方向上的偏移值
* my y方向上的偏移值
* chNum 要画字符串的长度
* s 最远距离
* maxPot 最远点
*/
double x=0;//标注中字符的坐标
double y=0;
double sx=0;//起始点的位置
double sy=0;
Pot p=null; //判断方向的临时变量
double temps=s*k;//实际最大距离
boolean nearby=false;//标记是否太近
for(;;){
int i;
if(temps<chNum*8){ //判断最大距离是否可以放下标注
return null;
}
for(i=0;i<chNum;i++){
if(pot.getX()>maxPot.getX()){
x=pot.getX()-mx*i;
}else{
x=pot.getX()+mx*i;
}
if(pot.getY()>maxPot.getY()){
y=pot.getY()-my*i;
}else{
y=pot.getY()+my*i;
}
for(int j=0;j<lists.size();j++){
if(Math.sqrt(Math.pow(x-lists.get(j).getX(), 2)
+Math.pow(y-lists.get(j).getY(), 2))<=8){
p=lists.get(j);
nearby=true;
break;
}
}
if(nearby) {
nearby=false;
break;
}
}
if(p!=null){
if(sx>p.getX()){
sx+=10;
}else{
sx-=10;
}
if(sy>p.getY()){
sy+=10;
}else{
sy-=10;
}
temps-=15;
p=null;
}
if(i==chNum){
break;
}
}
test("x="+(sx-pot.getX())+" y="+(pot.getY()-sy));
return new Pot(sx+pot.getX(),sy+pot.getY());
}
这个方法中,sx,sy在声明是初始化,在循环中打印sx,sy的值都有所改变,但在跳出所有循环后,打印的值还是初始化时的值,是什么原因?我弄了一下午都没有弄出来 ,在线等,请高手解答!谢谢!
问题不复杂,请先看后面的具体问题
展开
 我来答
115327884
2012-07-03 · 超过35用户采纳过TA的回答
知道答主
回答量:194
采纳率:0%
帮助的人:110万
展开全部
chNum
---------------------
p = lists.get(j)
----------------------
if (Math.sqrt(Math.pow(x - lists.get(j).getX(), 2)
+ Math.pow(y - lists.get(j).getY(), 2)) <= 8) {
p = lists.get(j);
nearby = true;
break;
}
的条件
-----------------------
查查这几个因素 主要是lists是什么
茶吗梦上奖1U
2012-07-03 · 超过15用户采纳过TA的回答
知道答主
回答量:60
采纳率:33%
帮助的人:20.8万
展开全部
double temps=s*k;
k在哪里赋值了?
if(temps<chNum*8){ //判断最大距离是否可以放下标注
return null; ⇒会返回,以下的操作都不会做,对吗?

}
追问
但要是不由这个条件返回,不就会执行下面的语句嘛!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
codeboot
2012-07-03 · 超过37用户采纳过TA的回答
知道小有建树答主
回答量:207
采纳率:0%
帮助的人:118万
展开全部
temps=s*k; k 呢?
if(temps<chNum*8){ //判断最大距离是否可以放下标注
return null; //////////////////////////////////////////////////////////////////////////return了吧
}
追问
k 是放在类里的一个私有的属性,
if(temps<chNum*8){ //判断最大距离是否可以放下标注
return null;
} 这只是返回的一个条件

if(i==chNum){
break;
}但这样条件可以跳出循环,执行这个
return new Pot(sx+pot.getX(),sy+pot.getY());
语句!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
希之桃01K
2012-07-03 · 贡献了超过121个回答
知道答主
回答量:121
采纳率:0%
帮助的人:31.8万
展开全部
hahahh 画一个坐标
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式