-1

好的,所以我的测试课上有这个

    public Test(Player p, int locX){
    this.p = p;
    this.locX = locX;
}

(然后我也有getter/setter)

在我的主课中,当有人键入命令 /test 时会发生这种情况:

    Player player = (Player) sender;
    int locX = 0;
    Test t = new Test(player, locX);
    t.setLocX(player.getLocation().getBlockX();
    t.setP(player);
    olist.put(player.getName(), t);

所以这只是我用来更好地理解如何从对象中获取两个值(不同的值)的一个测试项目。所以我想让它在玩家输入/检查玩家名称(存储在对象内)和对象中的位置时显示给玩家。到目前为止我只有这个

    for(String s : olist.keySet()){
        if(s == player.getName()){
            //Here I would like to display the 2 values to the player, but not
            //sure how I would separate the two values :\
        }
    }

尽管当我将玩家名称存储在对象中时,我将其存储在哈希图中没有任何意义,但我正在使用这个测试项目来尝试学习如何从 1 个对象中获取两个不同的值(实际上项目我需要获得一个位置和一个int,但我开始很简单;P)。(这也是使用 Bukkit API,但这不应该真正影响任何东西......)

4

3 回答 3

0

您可以只使用“t”对象中的吸气剂。

首先,从“t”对象中获取玩家:

Player p = t.getP();

现在你有了玩家,得到他的名字:

String PName = p.GetName();

您可以从 t 获取 LocX:

int lx = t.getLocX();

你可以像这样打印出来:

System.out.println("Player: " + PName + " |LocX: " + lx);
于 2013-08-05T14:49:59.150 回答
0

警告:相当笨拙...不好的做法,但是既然您正在学习...

在返回对象/集合时从函数获取多个值的另一种方法不是一种选择,请尝试修改对象的值。例如

public class Number {
public int getValue() {
    return a;
}
public void setValue(int a) {
    this.a = a;
}
int a;}

public class BadPractice {
public static void main(String[] args) {
    Number i= new Number();
    Number j=new Number();
    Number sum=new Number();
    BadPractice b= new BadPractice();
    b.sum(sum,i,j);
    System.out.println("sum="+sum.getValue()+",i="+i.getValue()+",j="+j.getValue());
}
private void sum(Number sum,Number i, Number j) {
    // TODO Auto-generated method stub
    i.setA(10);
    j.setA(20);
    sum.setA(i.getValue()+j.getValue());    
}}

给你结果。总和=30,i=10,j=20

于 2013-08-05T15:01:27.833 回答
0

将公共吸气剂用于您感兴趣的值。您说您有吸气剂,好好利用它们......(我可能误解了这个问题)

另外,我发现在创建对象 t 之后使用 setter setLocX 和 setP 很奇怪且没有必要。我会在实例化对象时通过构造函数设置它们。

于 2013-08-05T14:41:17.383 回答