方法之间的Java对象范围

方法之间的Java对象范围,java,object,methods,Java,Object,Methods,我在运行这段代码时遇到问题,我试图让程序使用其他类的输入来打印下面的字符串。如您所见,放入新新娘和位置对象的信息正在放入婚礼对象,然后我需要尝试从婚礼对象中检索详细信息,并将其显示在屏幕上,如下所示: 婚礼数据: 新娘:艾米·克罗诺斯,年龄:29 地点:南路,郊区:汤斯利 但是我遇到了4个与place.getName、place.get郊区()等相关的相同错误 java:6:错误:找不到符号 System.out.println(“位置”+place.getStreet()+”,郊区: “+pl

我在运行这段代码时遇到问题,我试图让程序使用其他类的输入来打印下面的字符串。如您所见,放入新新娘和位置对象的信息正在放入婚礼对象,然后我需要尝试从婚礼对象中检索详细信息,并将其显示在屏幕上,如下所示:

婚礼数据:
新娘:艾米·克罗诺斯,年龄:29
地点:南路,郊区:汤斯利

但是我遇到了4个与place.getName、place.get郊区()等相关的相同错误

java:6:错误:找不到符号 System.out.println(“位置”+place.getStreet()+”,郊区:
“+place.get郊区())

符号:可变位置

地点:班主

我很确定这和范围有关,但我不能确定我需要做什么

导致此错误的原因是什么?如何修复

代码如下:

public class WeddingDetails {

    public static void main(String[] args) {

        Bride person = new Bride("Amy Cronos", 29);
        Location place = new Location("Tonsley", "South Rd");
        Wedding wed = new Wedding(person, place);
        show(wed);
    }

    public static void show(Wedding wed) {
        System.out.println("Wedding data:");
        System.out.println("Bride: " + person.getName() + ", age: " + person.getAge());
        System.out.println("Location: " + place.getStreet() + ", suburb: " + place.getSuburb());

    }

    public static class Location {

        private String suburb;
        private String street;

        Location(String suburb, String street) {
            this.suburb = suburb;
            this.street = street;
        }

        public String getSuburb() {
            return suburb;
        }

        public String getStreet() {
            return street;
        }
    }

    public static class Bride {

        private String name;
        private int age;

        Bride(String name, int age) {
            this.name = name;
            this.age = age;
        }

        public String getName() {
            return name;
        }

        public int getAge() {
            return age;
        }

    }

    public static class Wedding {

        private Bride person;
        private Location place;

        Wedding(Bride person, Location place) {
            this.person = person;
            this.place = place;

        }

        public Bride getBride() {
            return person;
        }

        public Location getPlace() {
            return place;
        }
    }
}

这里的问题是您的println语句试图访问对象中的方法,但是通过在错误的对象上调用这些方法。您应该使用婚礼类的getter(getBride()和getPlace())访问Bride和Location对象。完整的调用将是wed.getBride().getName()和wed.getPlace().getStreet()等等

更正的代码如下。注意:为了能够在一个类中编译所有代码,我在Bride、Location和Wedding类声明中添加了
static
关键字。您只需删除
static
,然后将每个类复制并粘贴回.java文件

public class WeddingDetails {

    public static void main(String[] args) {

        Bride person = new Bride("Amy Cronos", 29);
        Location place = new Location("Tonsley", "South Rd");
        Wedding wed = new Wedding(person, place);
        show(wed);
    }

    public static void show(Wedding wed) {
        System.out.println("Wedding data:");
        System.out.println("Bride: " + wed.getBride().getName() + ", age: " + wed.getBride().getAge());
        System.out.println("Location: " + wed.getPlace().getStreet() + ", suburb: " + wed.getPlace().getSuburb());

    }

    public static class Location {

        private String suburb;
        private String street;

        Location(String suburb, String street) {
            this.suburb = suburb;
            this.street = street;
        }

        public String getSuburb() {
            return suburb;
        }

        public String getStreet() {
            return street;
        }
    }

    public static class Bride {

        private String name;
        private int age;

        Bride(String name, int age) {
            this.name = name;
            this.age = age;
        }

        public String getName() {
            return name;
        }

        public int getAge() {
            return age;
        }

    }

    public static class Wedding {

        private Bride person;
        private Location place;

        Wedding(Bride person, Location place) {
            this.person = person;
            this.place = place;

        }

        public Bride getBride() {
            return person;
        }

        public Location getPlace() {
            return place;
        }
    }
}

欢迎使用SO。不幸的是,您的问题有几个问题:标题与问题无关;您的问题的真正含义不清楚;您有一个基本语法错误,不适合SO的内容。我建议您删除该问题,阅读有关如何提问的文档,然后重试。您正在尝试在show()方法中访问
person
,并在main中声明它。首先尝试从
wed
获取
Bride
。感谢heaps Brooks,这就是问题所在,champion!