2016-07-26 2 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! "); 

    } 
} 

여기에 작은 사이드 노트 :

일반적으로 setter 및 getter가 단일 변수를 설정하거나 가져 오기 위해 set method 대신 생성자를 사용하는 것이 훨씬 더 좋습니다.

또한 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

같은 이름을 가진 두 마리의 동물이 없거나 :) "Draw"라고하는 동물)))) – Matt

+0

여러분을 환영합니다! 답변을 업데이트했습니다! –