2016-07-26 6 views
0

どのような素晴らしいプラットフォームです!私はあまりにも愚かな質問をしていない私は願っていますが、私は成功なしで答えを探しました。コンストラクタオブジェクトを比較するJava

Q: コンストラクタによって作成されたオブジェクト値を比較することはできますか?私は動物を戦い、 "str"の値をお互いに比較したいと思うように。 私の目標は、mainクラスではなく、Animalクラスで "fight"メソッドを作成することです。このように、私はちょうど)(dog.fight」のようにそれを呼び出すことができます。

例えば私のコードを参照してください(私の英語のため申し訳ありません)

public class Animal { 

private int str; 
private int agi; 
private String name; 
private String eyeColour; 


public void set (int strenght, int agility, String _name){ 
    str = strenght; 
    agi = agility; 
    name = _name; 

} 
public String get(){ 
    System.out.println("Created a new animal named " + name +"! "); 
    System.out.println(name + "'s agility is " + agi); 
    System.out.println(name + "'s strenght is " + str); 

    return name + str + agi; 
}  

} 

import java.util.Scanner; 

public class Hello { 

public static void main(String[] args) { 

    Animal dog = new Animal(); 
    dog.set(8, 4, "Rambo"); 
    dog.get(); 

    System.out.println(""); 
    Animal cat = new Animal(); 
    cat.set(2, 9, "Felix"); 
    cat.get(); 


} 
} 
+0

はい:

はここで変更されたコードです。それらにアクセスするには 'cat.str'と' dog.str'を使います。 – bradimus

+0

と '=='は参照を比較するので、 'str.equals'を使って' == 'ではなく比較してください。 –

+0

私の目標は、mainクラスではなく、Animalクラスで "fight"メソッドを作成することです。そのようにして、私はそれを "dog.fight();"のように呼び出すことができます。 これは私が想像するいくつかの種類の "obj1.str%obj2.str"が必要な理由です。 編集:ごめんなさい、obj1.str.equals obj2.str // :) – Softy

答えて

1

あなたは方法 『戦い』を作成する必要があります。

public class Animal { 

    private int str; 
    private int agi; 
    private String name; 
    private String eyeColour; 


    public void set (int strenght, int agility, String _name){ 
     str = strenght; 
     agi = agility; 
     name = _name; 

    } 
    public String get(){ 
     System.out.println("Created a new animal named " + name +"! "); 
     System.out.println(name + "'s agility is " + agi); 
     System.out.println(name + "'s strenght is " + str); 

     return name + str + agi; 
    } 

    public String fight(Animal rival){ 
     //Provide Comparison Logic Here 
     if(this.str>rival.str)return this.name; 
     if(this.str < rival.str)return rival.name; 
     return "No One "; 
    } 
} 


public class Hello { 

    public static void main(String[] args) { 

     Animal dog = new Animal(); 
     dog.set(8, 4, "Rambo"); 
     dog.get(); 

     System.out.println(""); 
     Animal cat = new Animal(); 
     cat.set(2, 9, "Felix"); 
     cat.get(); 

     System.out.println(dog.fight(cat)+" is the winner! "); 

    } 
} 

ここ小型サイドノート:

インクルードがパラメータとして動物のオブジェクトを受け取り、あなたに勝者の結果を返すためにそれを使用Animalクラス

ここでは、コードです

ここでsetメソッドの代わりにコンストラクタを使用する方がはるかに良いでしょう。通常、setterとgetterは1つの変数を設定または取得するために作成されます。

また、getメソッドの名前を変更してtoStringメソッドをオーバーライドすることをお勧めします。

public class Animal { 

    private int str; 
    private int agi; 
    private String name; 
    private String eyeColour; 


    public Animal (int str, int agi, String name){ 
     this.str = str; 
     this.agi = agi; 
     this.name = name; 
    } 

    @Override 
    public String toString(){ 
     String description = "Created a new animal named " + name +"!\n"; 
     description+=name + "'s agility is " + agi+"\n"; 
     description+=name + "'s strenght is " + str; 
     return description; 
    } 

    public String fight(Animal rival){ 
     //Provide Comparison Logic Here 
     if(this.str>rival.str)return this.name; 
     if(this.str < rival.str)return rival.name; 
     return "No One "; 
    } 
} 


public class Hello { 

    public static void main(String[] args) { 

     Animal dog = new Animal (8, 4, "Rambo"); 
     System.out.println(dog); 

     System.out.println(); 
     Animal cat = new Animal (2, 9, "Felix"); 
     System.out.println(cat); 

     System.out.println(dog.fight(cat)+" is the winner! "); 

    } 
} 
+0

私はそれを愛しています、ありがとうございました! – Softy

+0

同じ名前の2匹の動物がいないほうがいいですか、または「ドロー」と呼ばれる動物です)))) – Matt

+0

よろしくお願いします!私は答えを更新しました! –