Чтение из переменных, которые находятся в приватном методе
У меня небольшая проблема. Я пытаюсь напечатать содержимое нескольких переменных, которые находятся в частном методе. но я просто продолжаю получать "Не могу найти символ"
Ниже приведен код, с которого я пытаюсь прочитать данные (включая 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);
}
5 ответов
Вы, вероятно, хотите поместить эти переменные как переменные- члены, а затем просто получить к ним доступ, не используя .
-оператором.
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()
и так далее...
Когда вы делаете aBooking = new Booking(...)
вы создаете новый Booking
объект со всеми этими атрибутами и хранить его в aBooking
поле (я предполагаю, что это поле, поскольку оно нигде не объявлено). Это означает, что у вас есть поле aBooking, которое содержит все эти атрибуты (при условии Booking
конструктор сохраняет параметры). Таким образом, для доступа к этим полям вы проходите через aBooking
поле. Вероятно, что-то вроде этого:
System.out.println(aBooking.getTitle());
или, если вы не используете геттеры (вы должны!):
System.out.println(aBooking.title);
Переменные, которые вы объявляете внутри createBooking
остановка метода "существующего" после выхода из метода. Они недоступны в любом случае (ну, почти).
Вы не можете получить доступ к переменной метода и не можете использовать метод как экземпляр класса, используя оператор точки.
createBooking.something недопустим, вы можете использовать этот метод: createBooking()
Я не совсем понимаю, что ты хочешь делать. Но я думаю, что вы хотите что-то вроде этого:
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() вам следует переместиться в другое место. Может быть, в конструктор и вызвать его там..
Вы можете рассмотреть возможность изменения типа возвращаемого значения createBooking()
метод из 'void'
в 'Booking'
и тогда последняя строка станет:
Частное бронирование создатьБронирование () { ... ... вернуть новое бронирование (title, firstName, lastName, bookingNo, roomType)`` }
После этого ваш printCustomerName()
может выглядеть примерно так:
public void printCustomerName () { Бронирование бронирования = создатьБуксинг (); System.out.println (booking.title); // если заголовок виден, чего, вероятно, не должно быть //или же System.out.println (booking.getTitle()); // если такой метод существует... }