方法之间的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!