gpt4 book ai didi

java - 发现不兼容的类型 : void, 出了什么问题?

转载 作者:行者123 更新时间:2023-11-29 03:41:28 25 4
gpt4 key购买 nike

我正在尝试编写一个类来找到最接近的两个 vector 并返回一个总和。

我一直在努力理解,但我找不到收到此消息的原因,这是我收到的唯一错误:

java:93: 不兼容的类型发现:无效要求:EDU.gatech.cc.is.util.Vec2 结果=一个。添加(二); ^

第93行在代码的末尾,我放了一些箭头来表示!

enter code here


package EDU.gatech.cc.is.clay;


import java.util.*;
import EDU.gatech.cc.is.clay.*;
import java.lang.*;
import EDU.gatech.cc.is.abstractrobot.*;
import EDU.gatech.cc.is.util.Vec2;
import EDU.gatech.cc.is.util.Units;


public class MAX_go_in_between extends NodeVec2
{
public static final boolean DEBUG = /*true;*/ Node.DEBUG;
private SocSmall abstract_robot;


public MAX_go_in_between(SocSmall ar)
{
abstract_robot = ar;


}

long last_spott = 0;
Vec2 result = new Vec2();



public Vec2 Value(long timestamp)
{


if (DEBUG) System.out.println("MAX_Avoid_walls: Value()");

if ((timestamp > last_spott) || (timestamp == -1))
{
if (timestamp != -1) last_spott = timestamp;


Vec2 one;
Vec2 two;

//array of Vec2 of all the opponents
Vec2[] list_opp = abstract_robot.getOpponents(timestamp);
//empty array of vec2 where will be put the opponents in front of the robot
ArrayList<Vec2> list_opp_in_front;

Vec2 temp;


// find which opponents are in front and put them in the arraylist
for(int i=0; i<list_opp.length; i++)
{
temp = list_opp[i];

if(temp.x >= 0.0)
{
list_opp_in_front.add(temp);
}
}

//get closest opponent and sets it to index 0
for(int i=1; i<list_opp_in_front.size()-1; i++)
{
temp = list_opp_in_front.get(i);

if(list_opp_in_front.get(0).r<temp.r)
{
list_opp_in_front.set(i, list_opp_in_front.get(0));
list_opp_in_front.set(0, temp);

}
}

//get second closest opponent and sets it to index 1
for(int i=2; i<list_opp_in_front.size()-1; i++)
{
temp = list_opp_in_front.get(i);

if(list_opp_in_front.get(1).r<temp.r)
{
list_opp_in_front.set(i, list_opp_in_front.get(1));
list_opp_in_front.set(1, temp);
}

// sum both vectors
one = list_opp_in_front.get(0);
two = list_opp_in_front.get(1);

=============>>>>
=============>>>> result = one.add(two);
}

}

return(result);
}

}



Here is the Vec2.add(Vec2) method:


public void add(Vec2 other)
{
x = x + other.x;
y = y + other.y;
r = Math.sqrt(x*x + y*y);
if (r > 0)
t = Math.atan2(y,x);
}

最佳答案

result = one.add (two);
public void add (Vec2 other)
// ^^^^

由此可见,成员函数add 不会返回您可以放入result 中的任何内容。用这样一行:

x = x + other.x;

(其中 x 是“当前对象”的成员,other 是您要添加到其中的对象),可以肯定的是 one.Add (two) 旨在修改 one 而不仅仅是在计算中使用

所以,而不是:

one = list_opp_in_front.get (0);
two = list_opp_in_front.get (1);
result = one.add (two);

你可能需要这样的东西:

result = list_opp_in_front.get (0);
two = list_opp_in_front.get (1);
result.add (two);

关于java - 发现不兼容的类型 : void, 出了什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12907124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com