
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的值都有所改变,但在跳出所有循环后,打印的值还是初始化时的值,是什么原因?我弄了一下午都没有弄出来 ,在线等,请高手解答!谢谢!
问题不复杂,请先看后面的具体问题 展开
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的值都有所改变,但在跳出所有循环后,打印的值还是初始化时的值,是什么原因?我弄了一下午都没有弄出来 ,在线等,请高手解答!谢谢!
问题不复杂,请先看后面的具体问题 展开
4个回答
展开全部
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是什么
---------------------
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是什么
展开全部
double temps=s*k;
k在哪里赋值了?
if(temps<chNum*8){ //判断最大距离是否可以放下标注
return null; ⇒会返回,以下的操作都不会做,对吗?
}
k在哪里赋值了?
if(temps<chNum*8){ //判断最大距离是否可以放下标注
return null; ⇒会返回,以下的操作都不会做,对吗?
}
追问
但要是不由这个条件返回,不就会执行下面的语句嘛!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
temps=s*k; k 呢?
if(temps<chNum*8){ //判断最大距离是否可以放下标注
return null; //////////////////////////////////////////////////////////////////////////return了吧
}
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());
语句!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
hahahh 画一个坐标
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询