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

You probably want to put these variables as member variables, and then simply access it without using the .-operator.

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);
    }
}

Since you do create a Booking instance however, you may want to get rid of title, firstName, lastName, bookingNo and roomType and put them in the Booking class instead. And then access them through aBooking.getTitle() and so on...

于 2010-11-02T16:43:01.430 に答える
3

そうするとき、これらすべての属性を持つaBooking = new Booking(...)新しいオブジェクトを作成し、それをフィールドに格納しています(どこにも宣言されていないので、フィールドだと思います)。これは、これらすべての属性を保持する aBooking フィールドがあることを意味します (コンストラクターがパラメーターを保存すると仮定します)。したがって、これらのフィールドにアクセスするには、フィールドを通過します。おそらく次のようなものです:BookingaBookingBookingaBooking

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

または、ゲッターを使用していない場合 (すべきです!):

System.out.println(aBooking.title);

メソッド内で宣言した変数は、createBookingメソッドを離れると「存在」しなくなります。いかなる方法でも (まあ、ほとんど) アクセスできません。

于 2010-11-02T16:46:04.443 に答える
0

I don't understand totally what you wanna do. But i think you want something like this:

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();
}

But the createBooking() you should move to another place. Maybe into the Constructor and call it there..

于 2010-11-02T16:43:30.847 に答える
0

createBooking()メソッドの戻り値の型をから'void'に変更する'Booking'と、最後の行は次のようになります。

プライベート予約 createBooking()
{
    ...
    ...

    return new Booking(title, firstName, lastName, bookingNo, roomType)``
}

その後、次のprintCustomerName()ようになります。

public void printCustomerName()
{
    予約 予約 = createBooking();
    System.out.println (booking.title); // タイトルが表示されている場合、おそらくそうであってはなりません
    //また
    System.out.println (booking.getTitle()); // そのようなメソッドが存在する場合...
}
于 2010-11-02T17:01:43.930 に答える
0

メソッドの変数にアクセスすることはできず、ドット演算子を使用してメソッドをクラス インスタンスとして使用することはできません。

createBooking.something is illegal 、そのメソッドを使用できます: createBooking()

于 2010-11-02T16:41:23.810 に答える