2017-04-06 54 views
0

我遇到了运行此代码的问题,我试图让程序使用来自其他类的输入来打印下面的字符串。正如你所看到的,放入新娘和新位置对象的信息将被放入婚礼对象中,然后我需要尝试从婚礼对象中检索细节并将其显示在屏幕上,如下所示:方法之间的Java对象范围

Wedding data:
Bride: Amy Cronos, age: 29
Location: South Rd, suburb: Tonsley

但我不是遇到了与该place.getName,place.getSuburb()等等,等等这说

Main.java:6: error: cannot find symbol System.out.println("Location"+place.getStreet()+", suburb:
"+place.getsuburb());

symbol: variable place

location: class Main

我敢肯定,这事做与范围的4级相同的错误,但无法解决我需要做的事情。

什么是导致这个错误,我该如何解决它?

下面是代码:

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; 
     } 
    } 
} 
+2

欢迎SO不幸的是有几个问题你的问题:。标题有无关的问题,但目前还不清楚你的问题其实是,你有一个基本的语法错误,不适合SO的内容。我建议你删除该问题,阅读有关如何提出问题的文档,然后重试。 – sprinter

+0

你正试图访问show()方法中的'person'并在main中声明它。先尝试从'结婚'获得'新娘'。 – jmw5598

回答

0

问题这里是你的println语句试图对象中的访问方法,但通过调用错了对象上的方法。您应该使用Wedding类的getters(getBride()和getPlace()来访问新娘和位置对象。完整的调用将是wed.getBride()。getName()和wed.getPlace()。getStreet()等等。

修正代码如下注:为能够编译所有代码的一个类内部的目的,我加入了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; 
     } 
    } 
} 
+0

感谢堆布鲁克斯,这是问题,冠军! – Cloppy