2014-11-14 1 views
-3

두 클래스가 있습니다 : AnimalShelter입니다. toString 메서드는 보호소의 이름과 동물의 모든 정보를 인쇄하고 스캐너 클래스를 통해 사용자 입력을 통해 수집했습니다. 그러나 Shelter 클래스 내에서 Animal의 인스턴스를 만들면 분명히 해당 인스턴스의 값이 아직 없습니다.사용자 입력을 통해 전달 된 값을 사용하여 다른 클래스의 클래스 인스턴스를 만듭니다.

질문 : toString() 메서드를 사용하여 shelterName을 인쇄 할 수 있도록 사용자 입력을 통해 수집 된 값을 보호소 클래스로 지정하려면 어떻게해야합니까?

사용자 입력 :

public class AnimalShelter { 

    public static void main(String[] args) { 

     Scanner scan = new Scanner(System.in); 

     System.out.println("What is your animal's name?"); 
     String animalName = scan.nextLine(); 
     System.out.println("What is your animal's type?"); 
     String type = scan.nextLine(); 
     System.out.println("What is your animal's age?"); 
     int age = scan.nextInt(); 
     scan.nextLine(); 
     System.out.println("What is the name of your animal shelter?"); 
     String shelterName = scan.nextLine(); 
     Shelter myShelter = new Shelter(shelterName); 
     System.out.println(shelterName.toString()); 

    } 

} 

동물 클래스 :

public class Animal { 

private String animalName; 
private String type; 
private int age; 

    public Animal(String animalName, String type, int age) 
    { 
     this.animalName = animalName; 
     this.type = type; 
     this.age = age; 
    } 

    public String getAnimalName() 
    { 
     return animalName; 
    } 

    public String getType() 
    { 
     return type; 
    } 

    public int getAge() 
    { 
     return age; 
    } 

}

보호소 클래스 : 는 어떻게에 사용자 입력의 값을 가리 킵니다 않는다 myAnimal 개체?

public class Shelter { 

    Animal myAnimal = new Animal(); 

    private String shelterName; 

    public Shelter(String shelterName) 
    { 
     this.shelterName = shelterName; 
    } 

    public String toString(Animal myAnimal) 
    { 
     myAnimal.getAnimalName(); 
     myAnimal.getType(); 
     myAnimal.getAge(); 
     return "" + shelterName + myAnimal.getAnimalName() + myAnimal.getType() + myAnimal.getAge(); 
    } 

} 

답변

0

예제 코드에는 사용하지 않은 동물 클래스가 있습니다. 나는 숟가락 먹이를 먹는 것에 반대하지만 좋은 분위기로 메신저 그래서 당신에게 줄을 서서히 설명합니다.

public class AnimalShelter { 

    public static void main(String[] args) { 

     Scanner scan = new Scanner(System.in); 

     //Save user input as temp variable values 
     System.out.println("What is your animal's name?"); 
     String animalName = scan.nextLine(); 
     System.out.println("What is your animal's type?"); 
     String type = scan.nextLine(); 
     System.out.println("What is your animal's age?"); 
     int age = scan.nextInt(); 
     //Create an instance of your Animal class passing your temp variables 
     Animal animal= new Animal(animalName,type,age); 
     scan.nextLine(); 
     System.out.println("What is the name of your animal shelter?"); 
     String shelterName = scan.nextLine(); 

     //Create your Shelter class here passing the shelter name 
     Shelter myShelter = new Shelter(shelterName); 

     //Use the same class to pass your animal class(the one where you placed the attributes in) into the Shelter class. 
     System.out.println(myShelter.toString(animal)); 

    } 

} 
0

는 main() 메소드의 꼬리에 다음 코드를 추가합니다 :

Animal animal = new Animal(animalName, type, age); 
System.out.println(myShelter.toString(animal)); 
0

짧은 대답은, 당신은 아마 싶지 않아!

여기서 AnimalShelter 클래스는 대부분 설정이 잘되어있는 것 같지만 실제로 이와 같이 연결할 필요는 없습니다.

대신 main(...) 방법에서 Animal을 생성 한 다음 새로운 방법을 사용하여 기존의 쉼터에 '추가'하십시오. 예를 들어

:

다음
public class Shelter { 
    // Animal myAnimal = new Animal(); Remove this 
    private String shelterName; // This is good. 
    public Shelter(..) // This is fine too 

    public String toString(...) // This works, perhaps? 
    // New method here, with list 
    private ArrayList<Animal> listOfAnimals_ 
    public void addAnimal(Animal newAnimal) 
    { 
     listOfAnimals_.add(newAnimal); 
    } 
} 

main에서 :

Animal TimTheCow = new Animal ("Tim", "Cow", 5); 
myShelter.addAnimal(TimTheCow); 

이 필요하지 않은 강한 커플 링의 일부를 제거하고, 주변에 인수를 전달하는 압력을 감소시킨다. 당신이 Shelter의 모든 Animal의 목록을하고 싶었다면

, 당신은 같은에 toString 방법을 변경 것 :

public String toString() 
{ 
    String newStr; 
    for (Animal animal : listOfAnimals) // apologies if bad syntax 
    { 
     newStr += animal.toString(); 
    } 
    return "" + shelterName + newStr; 
} 

하고 Animal 클래스

,

public String toString() 
{ 
    return "" + getAnimalName() + getType() + getAge(); 
} 
관련 문제