【发布时间】:2014-06-30 04:39:02
【问题描述】:
我必须创建包含猫和狗的宠物列表,并且我必须为此使用继承。 Pet 类将包含 name 变量,Dog 类将包含 name 和 weight 变量,Cat 类将包含 name 和 coatColor 变量。
我必须创建一个包含下面菜单的测试类。
- 添加狗
- 添加猫
- 移除狗
- 移除猫
- 列出狗
- 列出猫
- 列出所有宠物
- 显示狗的最小、最大和平均体重
- 退出
我已经写了每一节课,但我无法完成它们我需要你的帮助。
我的课在下面。 (如果我做错了什么,请编辑并告诉我,我认为我做错了什么)
宠物类:
public class Pet{
private static String name;
protected String getName(){
return name;
}
protected void setName(String newName){
name = newName;
}
public Pet(String petName) {
name = petName;
}
}
狗类:
public class Dog extends Pet{
private Double weight;
protected double getWeight(){
return weight;
}
protected void setWeight(double newWeight){
weight = newWeight;
}
public Dog(double dogWeight, String petName){
super(petName);
weight = dogWeight;
}
}
猫类:
public class Cat extends Pet{
private String coatColor;
protected String getWeight(){
return coatColor;
}
protected void setColor(String newColor){
coatColor = newColor;
}
public Cat(String petName, String coatColor){
super(petName);
this.coatColor = coatColor;
}
}
宠物测试类:
import java.util.*;
public class PetTest
{
//i made it static to make all method to be able to see it.
static ArrayList<Pet> mainList = new ArrayList<Pet>();
static Iterator<Pet> mainIter = mainList.iterator();
static Scanner keyboard = new Scanner(System.in);
static Pet cat2342 = new Cat("mirnav", "beyaz");
public static void listDogs()
{
while(mainIter.hasNext())
{
for(Pet dog: mainList)
{
System.out.println(dog);
}//end of for loop
}//end of while loop
}//end of listDogs method
public static void listCats()
{
while(mainIter.hasNext())
{
for(Pet cat: mainList)
{
System.out.println(cat);
}//end of for loop
}//end of while loop
}//end of listCats method
public static void addDog(String dogName,Double dogWeight)
{
Pet dog = new Dog(dogName, dogWeight);
mainList.add(dog);
}//end of addDog method
public static void addCat(String catName, String furColor)
{
Pet cat = new Cat(catName, furColor);
mainList.add(cat);
}//end of addCat method
public static void removeDog(String dogName)
{
while (mainIter.hasNext())
{
for(Pet pet : mainList)
{
if(pet.getName().equals(dogName))
{
mainIter.remove();
}//end of if statement
}//end of for loop
}//end of while loop
}//end of removeDog method
public static void removeCat(String catName)
{
while (mainIter.hasNext())
{
for(Pet pet : mainList)
{
if(pet.getName().equals(catName))
{
mainIter.remove();
}//end of if statement
}//end of for loop
}//end of while loop
}//end of removeCat method
public static void main(String[] args)
{
System.out.println("1. Add dog ");
System.out.println("2. Add cat");
System.out.println("3. Remove dog");
System.out.println("4. Remove cat");
System.out.println("5. List dogs");
System.out.println("6. List cats");
System.out.println("7. List all pets");
System.out.println("8. Show min, max and average weight of dogs");
System.out.println("0. Quit");
int action = keyboard.nextInt();
Scanner parameter1 = new Scanner(System.in);
Scanner parameter2 = new Scanner(System.in);
while(action != 0)
{
switch(action)
{
case 1:
System.out.println("Type in the name of the dog that you want to add.");
String dogName = parameter1.next();
System.out.println("Type in the weight of the dog that you want to add.");
Double dogWeight = parameter2.nextDouble();
addDog(dogName,dogWeight);
showMenu();
case 2:
System.out.println("Type in the name of the cat that you want to add.");
String catName = parameter1.next();
System.out.println("Type in the color of the cat that you want to add.");
String furColor = parameter2.next();
addCat(catName,furColor);
case 3:
System.out.println("Type in the name of dog that you want to remove.");
String dogToRemove = parameter1.next();
removeDog(dogToRemove);
case 4:
System.out.println("Type in the name of dog that you want to remove.");
String catToRemove = parameter1.next();
removeDog(catToRemove);
case 5:
listDogs();
case 6:
listCats();
}//end of switch statement
}//end of while loop
}//end of main method
}//end of the class
【问题讨论】:
-
您有什么具体问题吗?
I couldn't complete them太模糊了。您的Pet、Dog和Cat课程对我来说看起来不错。不过,您在addDog()方法中创建Cat似乎有点奇怪……此外,您在Cat中的getWeight()方法可能应该是getColor()。 (复制粘贴错误?) -
是的,我注意到这是一个复制粘贴错误。我已经编辑了我的课程,但它无法正常工作,你们可以检查一下吗?如果你告诉我我的错误在哪里,我会很高兴。
-
你还是太含糊了。你能更具体地说明什么不能正常工作吗?你有例外吗?出乎意料的输出?也许此时您应该发布一个新问题,其中包含一些不起作用的具体示例。
-
例如,当我输入 6 时,它应该列出猫,但它什么也没做?我错过了什么?
标签: java inheritance arraylist