0

我有一个小问题,我正在尝试打印位于私有方法中的几个变量的内容。但我只是不断收到“找不到符号”

下面是我试图从(包括println)读取数据的代码,我对java也很陌生。

private void createBooking()
{
     String title;
     String firstName;
     String lastName;
     String bookingNo;
     String roomType;

    System.out.print("Enter title: ");
    title = keyboard.next();
    System.out.print("Enter first name: ");
    firstName = keyboard.next();
    System.out.print("Enter last name: ");
    lastName = keyboard.next();
    System.out.print("Enter booking number: ");
    bookingNo = keyboard.next();
    System.out.print("Enter room type: ");
    roomType = keyboard.next();


    aBooking = new Booking (title, firstName, lastName, bookingNo, roomType);

}

public void printCustomerName()
{
    System.out.println (createBooking.title);
}
4

5 回答 5

4

您可能希望将这些变量作为成员变量,然后在不使用 -.运算符的情况下简单地访问它。

class BookingClass {

    // You also seem to need the following:
    Booking aBooking;

    String title;
    String firstName;
    String lastName;
    String bookingNo;
    String roomType;

    private void createBooking() {

        System.out.print("Enter title: ");
        title = keyboard.next();
        System.out.print("Enter first name: ");
        firstName = keyboard.next();
        System.out.print("Enter last name: ");
        lastName = keyboard.next();
        System.out.print("Enter booking number: ");
        bookingNo = keyboard.next();
        System.out.print("Enter room type: ");
        roomType = keyboard.next();

        aBooking = new Booking(title, firstName, lastName, bookingNo, roomType);
    }

    public void printCustomerName() {
        System.out.println(title);
        // ...should perhaps be
        // System.out.println(firstName + " " + lastName);
    }
}

但是,由于您确实创建了一个Booking实例,因此您可能希望摆脱title, firstName, lastName,bookingNo并将roomType它们放在Booking类中。然后通过aBooking.getTitle()等等访问它们......

于 2010-11-02T16:43:01.430 回答
3

当你这样做时,aBooking = new Booking(...)你正在创建一个Booking具有所有这些属性的新对象并将其存储在aBooking字段中(我猜它是一个字段,因为它没有在任何地方声明)。这意味着您有一个包含所有这些属性的 aBooking 字段(假设Booking构造函数保存了参数)。因此,要访问这些字段,您需要遍历该aBooking字段。大概是这样的:

System.out.println(aBooking.getTitle());

或者,如果您不使用吸气剂(您应该!):

System.out.println(aBooking.title);

createBooking一旦您离开该方法,您在该方法中声明的变量将停止“存在”。它们无法以任何方式访问(嗯,几乎)。

于 2010-11-02T16:46:04.443 回答
0

您不能访问方法的变量,也不能使用点运算符将方法用作类实例。

createBooking.something 是非法的,您可以使用该方法: createBooking()

于 2010-11-02T16:41:23.810 回答
0

我完全不明白你想做什么。但我认为你想要这样的东西:

public String printCustomerName() {
  // This creates the booking object (aBooking)
  createBooking();

  // You can access the firstname lastname like that (I assume that you have a getter method implemented..)
  return aBooking.getFirstName() + " " + aBooking.getLastName();
}

但是您应该将 createBooking() 移到另一个地方。也许进入构造函数并在那里调用它..

于 2010-11-02T16:43:30.847 回答
0

您可能需要考虑将createBooking()方法的返回类型从更改'void''Booking',然后最后一行将变为:

私人预订 createBooking()
{
    ...
    ...

    返回新的预订(标题,名字,姓氏,预订编号,房间类型)``
}

之后,您printCustomerName()可能看起来像这样:

公共无效打印客户名称()
{
    预订预订 = createBooking();
    System.out.println (booking.title); // 如果标题是可见的,它可能不应该是
    //或者
    System.out.println(booking.getTitle()); // 如果存在这样的方法...
}
于 2010-11-02T17:01:43.930 回答