-1

さて、私はこれをテストクラスに持っています

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

(そして、ゲッター/セッターも持っています)

私のメイン クラスでは、誰かがコマンド /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);

これは、オブジェクトから (異なる) 2 つの値を取得する方法をよりよく理解するために使用している単なるテスト プロジェクトです。そのため、プレイヤーが入力したときに、/check プレイヤー名 (オブジェクト内に格納されている) とオブジェクト内の場所がプレイヤーに表示されるようにしたいと考えています。今のところこれしか持ってない

    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 つのオブジェクトから 2 つの異なる値を取得する方法を学習しています (実際のプロジェクトでは、場所と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 を作成した直後にセッター setLocX と setP を使用するのは奇妙で不必要だと思います。コンストラクターを介して、オブジェクトをインスタンス化するときにそれらを設定します。

于 2013-08-05T14:41:17.383 に答える