3

ペットは猫でも犬でも構いません。各ペットには、名前、所有者の名前、色、医師の名前、および品種が必要です。すべてのペットは泣いたり、食べたり、寝たりできます。switch メソッドを使わずに、setter と getter 関数をスキャナーで使ってみました。しかし、ユーザーが犬を入力した場合、ユーザーは犬についてすべて入力し、それ以外の場合は猫を入力するかどうかを識別する方法がわかりません。

これは可能ですか?

package petexercise;

import java.util.Scanner;

public class PetCatDog {
  public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    PetCat cat = new PetCat();
    PetDog dog = new PetDog();
    System.out.print("Enter Dog or Cat Word:");
    String pet = cat.nextLine();
  }
}

他のサブクラスはセッターとゲッター用に作られています

4

4 に答える 4

4

スイッチを使いたくない場合は、マップを使用できると思います。最初のステップでは、単純な文字列でユーザー入力を識別し、2 番目のステップでペットを作成します。

Map<String, PetFactory> factories = new HashMap<>();
factories.put("dog", new DogFactory())
...
String petType = scanner.nextLine();
factories.get(petType).createPet("name", "color");
于 2013-07-31T10:50:42.583 に答える
2

だからあなたは-

User - ユーザーを表すクラス。名前、ペット情報などを持っています。ユーザーはペットをたくさん飼うことも、飼わないこともできます

ペット - ある種の動物を表すペット。名前、年齢などのいくつかの共通の属性を持ちます。食べるなどのいくつかの共通のアクションがあります。

犬 - 拡張ペットには、名前、年齢、色、品種、吠え声、ボールのフェッチなどの犬専用のアクションなどの属性があります

猫 - エクステンド ペットには、名前、年齢、色、品種などの属性があり、1 日に 20 回寝て役に立たないなどの行動があります。

ユーザーに尋ねます-

  1. ユーザー情報 (ビルドユーザー)
  2. ユーザーがペットを飼っているかどうかを尋ねます。ペットを飼っていない場合は、ユーザー プロファイルを更新して、ペットを飼っていないことを示します。
  3. ペットを飼っている場合は、犬を飼っているかどうか尋ねます。持っている場合は、いくつあるか尋ねます。各犬の情報をお読みください。ユーザーの犬のプロフィールを作成します。犬がいない場合は、ユーザー プロファイルを更新して、犬がいないことを示します。
  4. ペットを飼っている場合は、猫を飼っているかどうか尋ねます。持っている場合は、いくつあるか尋ねます。各猫の情報をお読みください。ステップ 3 で犬の場合と同様に、ユーザーの猫のプロファイルを作成します。

アップデート:

ユーザーが犬または猫のどちらを入力したかを知るために、次のようなものを使用できます-

Scanner scan = new Scanner(System.in);

String response;

do{    
    System.out.print("Do you have a pet ? (Y/N): ");
    response = scan.nextLine();    
} while(!response.equalsIgnoreCase("Y") && !response.equalsIgnoreCase("N"));

if(response.equalsIgnoreCase("N")){
    System.exit(0);
}

do{    
    System.out.print("Cat or a dog ? (C/D): ");
    response = scan.nextLine();    
} while(!response.equalsIgnoreCase("C") && !response.equalsIgnoreCase("D")); 
于 2013-07-31T10:51:25.050 に答える
1

わかった !みんな助けてくれてありがとう

パッケージdogandcat;

java.util.Scanner をインポートします。

public class CatDogSystem {

public static void main(String[] args) {

    String animal;

    Scanner scan = new Scanner(System.in);
    Cat cat = new Cat();
    Dog dog = new Dog();

    System.out.print("Enter Dog or Cat Only: ");
    animal = scan.nextLine();

    if(animal.equalsIgnoreCase("Cat")) {
        System.out.print("Enter cat's name: ");
        cat.setCatName(scan.nextLine());
        System.out.print("Enter owner's name: ");
        cat.setCatOwnersName(scan.nextLine());
        System.out.print("Enter cat's color: ");
        cat.setCatColor(scan.nextLine());
        System.out.print("Enter doctor's name: ");
        cat.setCatDoctorsName(scan.nextLine());
        System.out.print("Enter cat's breed: ");
        cat.setCatBreed(scan.nextLine());

        System.out.println("");
        System.out.println("Cat's Details");
        System.out.println(cat.getCatName());
        System.out.println(cat.getCatOwnersName());
        System.out.println(cat.getCatColor());
        System.out.println(cat.getCatDoctorsName());
        System.out.println(cat.getCatBreed());


    } else if(animal.equalsIgnoreCase("Dog")) {
        System.out.print("Enter Dog's name: ");
        dog.setDogName(scan.nextLine());
        System.out.print("Enter owner's name: ");
        dog.setDogOwnersName(scan.nextLine());
        System.out.print("Enter Dog's color: ");
        dog.setDogColor(scan.nextLine());
        System.out.print("Enter doctor's name: ");
        dog.setDogDoctorsName(scan.nextLine());
        System.out.print("Enter Dog's breed: ");
        dog.setDogBreed(scan.nextLine());

        System.out.println("");
        System.out.println("Dog's Details");
        System.out.println(dog.getDogName());
        System.out.println(dog.getDogOwnersName());
        System.out.println(dog.getDogColor());
        System.out.println(dog.getDogDoctorsName());
        System.out.println(dog.getDogBreed());
    } else System.out.println("Invalid Input !");
}

}

于 2013-08-02T09:10:04.170 に答える