Pregunta

Estoy teniendo un pequeño problema que estoy tratando de imprimir el contenido de un par de variables que se encuentran en un método privado. pero simplemente siguen dando 'no puede encontrar símbolo'

A continuación se muestra el código que estoy tratando de leer los datos de la println (incluyendo) también soy muy nuevo en 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);
}
¿Fue útil?

Solución

Es posible que desee poner estas variables como variables miembro , y luego simplemente acceder a ella sin necesidad de utilizar el .-operador.

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

Desde que hace crear una instancia Booking sin embargo, es posible que desee deshacerse de title, firstName, lastName, bookingNo y roomType y ponerlos en la clase Booking lugar. Y luego acceder a ellos a través de aBooking.getTitle() y así sucesivamente ...

Otros consejos

Al hacer aBooking = new Booking(...) va a crear un nuevo objeto Booking con todos esos atributos y almacenarlo en el campo aBooking (supongo que es un campo ya que no está declarado en cualquier lugar). Esto significa que tiene un campo aBooking que contiene todos esos atributos (suponiendo que el constructor Booking guarda los parámetros). Por lo tanto, para acceder a esos campos que pasar por el campo de aBooking. Probablemente algo como esto:

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

o, si no lo está utilizando captadores (usted debe!):

System.out.println(aBooking.title);

Las variables se declaran dentro de la createBooking método stop "existente" una vez que salga el método. Ellos no son accesibles en cualquier forma (bueno, casi).

No se puede acceder a la variable de un método y no se puede utilizar un método como una instancia de la clase utilizando un operador punto.

createBooking.something es ilegal, puede utilizar ese método: createBooking ()

Es posible que desee considerar el cambio del tipo de retorno del método de createBooking() 'void' a 'Booking', y luego la última línea se convertiría en:

private Booking createBooking()
{
    ...
    ...

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

Después de eso, su printCustomerName() podría parecerse a algo como:

public void printCustomerName()
{
    Booking booking  = createBooking();
    System.out.println (booking.title); // if title is visible, which it probably shouldn't be
    //or
    System.out.println (booking.getTitle()); // if such a method exists...
}

No entiendo totalmente lo que quiere hacer. Pero yo creo que usted quiere algo como esto:

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

Pero el createBooking () que debe moverse a otro lugar. Tal vez en el constructor y lo llaman allí ..

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top