我的程序中有一个搜索功能,可以查找我的arraylist中的名字或人物。这可以找到该人的姓名,但我无法获得我需要的其他信息。我猜它是因为我还没有宣布什么。我不确定如何继续。
掌握我方法的第一堂课。
public String searchName(String guest)
{
for (Booking s : bookings)
{
if (s.getGuest().equals(guest))
return guest + " is in room " + roomID + "\n";
}
return guest + " is not booking in at the hostel";
}
我的第二课是我的GUI,它调用方法
else if (item.equals("Find Room"))
{
String name = JOptionPane.showInputDialog(this,
"Enter Guests Name",
"Find Room",
JOptionPane.QUESTION_MESSAGE);
output.setText( hostel.searchName(name));
}
我可以搜索人名,如果正确,可以找到并将信息成功地写入我的JTextArea。它不会显示roomID
,只会出现null
。我很困惑,我没有收到任何错误消息,而null
与int不是字符串正常关联?
完整代码,如果需要GUI CLASS
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GUI extends JFrame implements ActionListener
{
private HostelFile hostel;
private JPanel textOutput;
private JScrollPane scroller;
private JButton listFreeButton = new JButton("List Free Rooms");
private JButton newBookingButton = new JButton("New Booking");
private JButton cancelBookingButton = new JButton("Cancel Booking");
private JButton listAllButton = new JButton("List All Bookings");
private JButton allRoomsButton = new JButton("List All Room Details");
private JButton findRoomButton = new JButton("Find Room");
private JButton exitButton = new JButton("Exit System");
private JTextArea output = new JTextArea(30,30);
public GUI(String hostelName)
{
super(hostelName);
hostel = new HostelFile(hostelName);
makeFrame();
showFrame();
}
public void showFrame()
{
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(800,600);
setVisible(true);
}
public void makeFrame()
{
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new GridLayout(10,10,10,10));
buttonPanel.setBorder(BorderFactory.createEtchedBorder());
buttonPanel.add(listFreeButton);
buttonPanel.add(newBookingButton);
buttonPanel.add(cancelBookingButton);
buttonPanel.add(listAllButton);
buttonPanel.add(allRoomsButton);
buttonPanel.add(findRoomButton);
buttonPanel.add(exitButton);
textOutput = new JPanel();
textOutput.setLayout(new BorderLayout());
textOutput.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
output.setEditable(false);
scroller = new JScrollPane(output);
textOutput.add(scroller);
add(buttonPanel,BorderLayout.WEST);
add(textOutput,BorderLayout.CENTER);
listFreeButton.addActionListener(this);
newBookingButton.addActionListener(this);
cancelBookingButton.addActionListener(this);
listAllButton.addActionListener(this);
allRoomsButton.addActionListener(this);
findRoomButton.addActionListener(this);
exitButton.addActionListener(this);
}
public void actionPerformed( ActionEvent ae)
{
String item = ae.getActionCommand();
if (item.equals("List Free Rooms"))
{
}
else if (item.equals("New Booking"))
{
AddBooking bookingGUI = new AddBooking(this);
}
else if (item.equals("Cancel Booking"))
{
}
else if (item.equals("List All Bookings"))
{
output.setText(hostel.getAllBookings());
}
else if (item.equals("List All Room Details"))
{
}
else if (item.equals("Find Room"))
{
String name = JOptionPane.showInputDialog(this,
"Enter Guests Name",
"Find Room",
JOptionPane.QUESTION_MESSAGE);
output.setText( hostel.searchName(name));
}
else if (item.equals("Exit System"))
{
hostel.saveListBookings();
System.exit(0);
}
}
public void addBooking(String roomID, String roomType, String guest)
{
output.setText(hostel.addBooking(roomID,roomType,guest));
}
}
方法的完整代码
import java.util.*;
public class ListBookings
{
private String hostelName;
private ArrayList<Booking> bookings;
private String roomID;
private String roomType;
private boolean ensuite;
private String guest;
private String nights;
private String booked;
/**
* constructs objects for GUI
*/
public ListBookings(String hostelName)
{
this.hostelName = hostelName;
bookings = new ArrayList<Booking>();
}
public String getHostelName()
{
return hostelName;
}
public String addBooking(String roomID, String roomType, String guest)
{
if (roomID.equals(""))
return "Error Please Entre Room ID";
else if (roomType.equals(""))
return "Error Please Entre Room Type";
else if (guest.equals(""))
return "Error Please Entre Guest Name";
bookings.add(new Booking(roomID,roomType,guest));
return "Room " + roomID + " " + roomType + " Has Been Booked For " + guest;
}
public String getAllBookings()
{
if (bookings.size() > 0)
{
String allBookings = "";
for (Booking s : bookings)
{
allBookings = allBookings + s.getRoomID() + " " + s.getRoomType() + " " + s.getGuest() + "\n";
}
return allBookings;
}
else
{
return "Bookings are Empty";
}
}
public String searchName(String guest)
{
for (Booking s : bookings)
{
if (s.getGuest().equals(guest))
return guest + " is in room " + roomID + "\n";
}
return guest + " is not booking in at the hostel";
}
public String deleteBooking(String roomID)
{
int index = 0;
for ( Booking s : bookings )
{
if ( s.getRoomID().equals(roomID))
{
return "Room ID: " + roomID + " Room Type: " + roomType + " Guest: " + guest;
//students.remove(index);
//return name + " removed from module " + moduleName + "\n";
}
index++;
}
return " Cannot find " + roomID + "\n";
}
}
HostelFile
import java.util.*;
import java.io.*;
public class HostelFile extends ListBookings
{
public HostelFile(String hostelName)
{
super(hostelName);
readListBookings(hostelName);
}
private void readListBookings(String fileName)
{
String roomID;
String roomType;
String guest;
try
{
Scanner fileScanner = new Scanner( new File ( fileName + ".txt"));
while (fileScanner.hasNext())
{
roomID = fileScanner.next();
roomType = fileScanner.next();
guest = fileScanner.next();
addBooking(roomID,roomType,guest);
}
fileScanner.close();
}
catch (IOException e)
{
System.out.println("File not found");
}
}
public void saveListBookings()
{
String fileName = getHostelName() +".txt" ;
try {
PrintWriter print = new PrintWriter(
new BufferedWriter(
new FileWriter( fileName ) ) );
print.println(getAllBookings());
print.close();
}
catch ( IOException iox ) {
System.out.println("Problem writing " + fileName );
}
}
}
答案 0 :(得分:0)
var roomID可用于此目的没有意义。在预订中必须有一些属性来保存房间。类似于“s.getRoomID()”。
编辑:好的。看到所有类,很明显Booking有一个getRoomID()方法。
将您的功能更改为:
public String searchName(String guest)
{
for (Booking s : bookings)
{
if (s.getGuest().equals(guest))
return guest + " is in room " + s.getRoomId() + "\n";
}
return guest + " is not booking in at the hostel";
}