2015-05-29 7 views
-2


Я пытаюсь написать программу на Java, чтобы забронировать гостиничные номера. Я написал методы в одном классе и пытаюсь назвать это из моего основного класса, но я не знаю, как это сделать.
Программа запрашивает у пользователя ввод необходимой информации для методов, но я просто не знаю, как ее выполнить.
Я также хочу знать, как изменить статус комнаты на «B» - для забронированного, когда пользователь входит в RoomId и подтверждает их бронирование, а затем распечатывает информацию с помощью метода print() в Room.java.

Любая помощь будет замечательной. Благодаря

Room.javaКак вызвать методы из другого класса?

package utilities; 

public class Room 
{ 

private String roomId; 
private String description; 
private String status; 
private double dailyRate; 
private DateTime bookingStartDate; 
private DateTime bookingEndDate; 

public Room(String roomId, String description, double dailyRate) 
{ 
    this.setRoomId(roomId); 
    this.setDescription(description); 
    this.setDailyRate(dailyRate); 
    this.status = "A"; 
} 

public boolean bookRoom (String customerID, int nightsRequired) 
{ 
    if (status.equals('A')) 
    { 
     System.out.println("You have booked the room"); 
     status = "B"; 
     return true; 
    } 
    else 
    { 
     System.out.println("This room cannot be booked"); 
     return false; 
    } 
} 

public void print() 
{ 
    System.out.println("Room ID: " + getRoomId()); 
    System.out.println("Description: "+ getDescription()); 
    System.out.println("Status: " + status); 
    System.out.println("Daily Rate: " + getDailyRate()); 
    if (status.equals('B')) 
    { 
     System.out.println(bookingStartDate); 
     System.out.println(bookingEndDate); 
    } 
    else{ 
    } 

} 

/** 
* @return the dailyRate 
*/ 
public double getDailyRate() { 
    return dailyRate; 
} 

/** 
* @param dailyRate the dailyRate to set 
*/ 
public void setDailyRate(double dailyRate) { 
    this.dailyRate = dailyRate; 
} 

/** 
* @return the description 
*/ 
public String getDescription() { 
    return description; 
} 

/** 
* @param description the description to set 
*/ 
public void setDescription(String description) { 
    this.description = description; 
} 

/** 
* @return the roomId 
*/ 
public String getRoomId() { 
    return roomId; 
} 

/** 
* @param roomId the roomId to set 
*/ 
} 

TestRoom.java

package stuff; 

import java.util.Scanner; 

import utilities.Room; 

public class TestRoom { 

public static void main(String[] args) 
{ 
    Room [] rooms = 
      { 
      new Room("GARDEN0001", "NorthWest Garden View", 45.00), 
      new Room("GARDEN0002", "SouthEast Garden View", 65.0), 
      new Room("GARDEN0003", "North Garden View", 35.00), 
      new Room("GARDEN0004", "South Garden View", 52.0), 
      new Room("GARDEN0005", "West Garden View", 35.00), 
      new Room("GARDEN0006", "East Garden View", 35.00) 


      }; 
    Scanner userInput = new Scanner(System.in); 

    System.out.println("Input a lower price range. "); 
    int lower = userInput.nextInt(); 

    System.out.println("Input an upper price range. "); 
    int upper = userInput.nextInt(); 


    if (lower < 65) 
    { 
     for (int i = 0; i < rooms.length; i++) 
     { 
      if (rooms[i].getDailyRate() > lower && rooms[i].getDailyRate() < upper) 
      {  
       System.out.println("ID: \t" + rooms[i].getRoomId()); 
       System.out.println("DESC: \t" + rooms[i].getDescription()); 
       System.out.println("RATE: \t" + rooms[i].getDailyRate() + "\n"); 
      } 
     } 
    } 
    else 
    { 
     System.out.println("There are no rooms that fit your criteria."); 
    } 

    System.out.println("Input the ID of the room you wish to book."); 
    String roomId = userInput.next(); 

    System.out.println("Please enter your customer ID"); 
    String customerID = userInput.next(); 

    System.out.println("Please enter the amount of nights you wish to stay."); 
    int nightsRequired = userInput.nextInt(); 

    // Code to actually make the booking. I don't know what goes here. 
+0

itterrate корыто комнаты, чтобы найти спичку, или поместить все номера в карте, какой номер ID будет ключевым , – user902383

+0

http://stackoverflow.com/questions/7776306/java-calling-a-method-from-another-class Я думаю, что это то, что вы ищете ... –

ответ

1

Просто получить экземпляр Room и вызвать метод.

Твердая кодирования метод будет выглядеть следующим образом:

Room toBook = null; 
for (Room r : rooms) { 
    if (r.getRoomId().equals(roomId)) 
     toBook = r; 
} 

if (toBook != null) { 
    if (toBook.bookRoom(customerID, nightsRequired)) { 
     // room booked succesfully 
    } else { 
     // can't book the room 
    } 
} else { 
    // room does not exists 
} 

Но, до тех пор, как это будет больше приложение, которое я рекомендую вам код вашего own equals method тогда Arrays.contains() найдет Room.

Room toBook = new Room(roomid); 
if (rooms.contains(toBook) && toBook.bookRoom(customerID, nightsRequired)){ 
    // room booked succesfully 
} else if (rooms.contains(toBook)) { 
    // can't book the room 
} else { 
    // room does not exists 
} 
+0

Я пробовал это, и я понял, что комната не работает не существует. – iReaperX

+0

мой плохой, хотя 'roomId' был int ... ** в Java мы должны сравнивать' String 'всегда с' equals' не с '==' ** ... проверить мое редактирование –

0

Добавьте код в конце метода Main() в тестовом классе

Room r=null; 
    boolean val=false; 
    for(int i=0;i<rooms.length;i++){ 
     if(rooms[i].getRoomId().equals(roomId)){ 
      r=new Room(rooms[i].getRoomId(), rooms[i].getDescription(), rooms[i].getDailyRate()); 
      r.bookRoom(customerID, nightsRequired); 
      val=true; 
      break; 
     } 
    } 
    if(val){ 
     r.print(); 
    } 
Смежные вопросы