为什么我在编译时似乎无法在程序中找到错误。需要帮助

时间:2018-04-28 13:43:51

标签: java compiler-errors

宠物商店计划应该从用户可以选择收养宠物或将宠物送到商店开始。如果用户想要收养宠物,他们应该能够看到所有可用的宠物,除非他们说他们知道他们想要什么类型的宠物,然后只显示那种类型的宠物。

需要为此程序创建的4种方法应该:

添加新宠物 得到宠物 按类型展示宠物 展示宠物可供收养 对象类:Pets.java

import java.util.*;

public class Pets {
    public static void main(String[] args){
        private double age; // age of the animal (e.g. for 6 months the age would be .5)
        private String petName; // name of the animal
        private String aType; // the type of the pet (e.g. "bird", "dog", "cat", "fish", etc)
        private int collarID; // id number for the pets
        private boolean isAdopted = false; // truth of if the pet has been adopted or not
        private String newOwner;
        private Date adoptionDate;

        public double getAge() {
            return age;
        }

        public void setAge(double age) {
            this.age = age;
        }

        public String getPetName() {
            return petName; 
        }

        public void setPetName(String petName) {
            this.petName = petName;
        }

        public String getaType() {
            return aType;
        }

        public void setaType(String aType) {
            this.aType = aType;
        }

        public int getCollarId() {
            return collarID;
        }

        public void setCollarId(int collarId) {
            this.collarID = collarId;
        }

        public boolean isAdoptated() {
            return isAdopted;
        }

        public void setAdoptated(boolean isAdoptated) {
            this.isAdopted = isAdoptated;
        }

        public Date getAdoptionDate() {
            return adoptionDate;
        }

        public void setAdoptionDate(Date adoptionDate) {
            this.adoptionDate = adoptionDate;
        }

        @Override

        public String toString() {
            return "Pets [age=" + age + ", petName=" + petName + ", aType=" + aType + ", collarId=" + collarID

            + ", isAdoptated=" + isAdopted + ", adoptionDate=" + adoptionDate + "]";

        }
    }
}

3 个答案:

答案 0 :(得分:0)

您应该在类中定义数据字段和方法,但不能在main()方法中定义。 main() - 方法是java应用程序的入口点,可用于创建Pets类的实例。 e.g:

public static void main(String[] args) {
    Pets pet = new Pets();
}

答案 1 :(得分:0)

此代码未编译主要有两个原因:

  • 您正在为方法内的变量指定访问修饰符(在本例中为 main ),这是禁止的;
  • 您正在另一种方法()中编写方法(例如 getAge )并尝试返回变量(例如< / em> 年龄)超出该范围,实际上变量age在getAge方法中是未知的,因为它在main方法中声明。

您应该将变量声明移动到类级别,然后使用这些变量分隔所有方法。我会给你一个草图,而不是完整的解决方案:

import java.util.*;

public class Pets {
    /* Insert all variable declarations here */
    private double age;

    /* Constructor if you need it */
    public Pets(/* parameters you think you need */) {
        // Set attributes when you declare a new Pets()
    }

    /* Insert all methods you need here */
    public double getAge() {
        return this.age;
    }

主要方法的定位 - 对于我在描述中所触及的内容 - 应放在此类之外,在整个应用程序将开始运行的另一个类中。 Pet类应仅用于任何与宠物有关的事情(您需要实现的四种方法以及用于检索私有类变量的所有getter / setter)。

答案 2 :(得分:0)

你碰巧把所有东西 - 私人领域和公共方法 - 放在你的主要方法中。这没有意义。您main中的所有内容都会移到外面public class Pets {下方。这应该可以解决你的编译器错误。