我正在尝试使用存储在文本文件中的数据填充ArrayList,数据是由空格分隔的5个不同值,以及布尔值,字符串和整数的混合。另外,我正在使用BlueJ,不确定这是否会改变。
从文件中读取数据时,应根据该数据创建Room类型的对象
我是Java的新手,我刚刚开始在过去几周内学习它,我的阅读数据类如下:
房间数据类:
public class RoomData
{
//Default Values of a Room
private int roomNumber = 0;
private int bookingNights = 0;
private boolean hasEnSuite = false;
private boolean isBooked = false;
private String bookingName = "<None>";
public void setRoomNumber(int roomNumber)
{
this.roomNumber = roomNumber;
}
public void setBookingNights(int bookingNights)
{
this.bookingNights = bookingNights;
}
public void setHasEnSuite()
{
this.hasEnSuite = hasEnSuite;
}
public void setIsBooked()
{
this.isBooked = isBooked;
}
public void setBookingName()
{
this.bookingName = bookingName;
}
}
ReadDataClass:
public class ReadHotelData
{
private String filePath;
public ReadHotelData()
{
filePath = "hotelData.txt";
}
private List<RoomData> list = new ArrayList <>();
public boolean hasNext() throws FileNotFoundException
{
Scanner s = new Scanner(new File("hotelData.txt"));
while (s.hasNext())
{
String nextLine = s.nextLine(); //reads text file line by line
RoomData roomData = new RoomData();
String[] values = nextLine.split(" "); // splits the text file by white space
roomData.setRoomNumber(Integer.parseInt(values[0]));
roomData.setBookingNights(Integer.parseInt(values[1]));
roomData.setHasEnSuite(Boolean.parseBoolean(values[2]));
roomData.setIsBooked(Boolean.parseBoolean(values[3]));
roomData.setBookingName(String.parseString(values[4]));
list.add(roomData);
}// end loop
s.close();
return true;
}
public List <RoomData> getRoomDataList()
{
return list;
}
}
就像我说我是新人一样,如果我错过了什么,我真的很感激任何帮助!
存储在文本文件中的数据示例:
0 false David 0 false
0 true John 0 false
0 false Jim 0 true
答案 0 :(得分:1)
首先创建一个类l2 <- list(a = c(1,-2), 2,7,0,45,78,89,90,2,-1)
Reduce(min, l)
# [1] -2
来保存每个房间的数据,并为每个变量赋予一个有意义的名称以及相应的类型。
将您的arraylist更改为保留该类型而不是RoomData
String
读取每一行
private List<RoomData> list = new ArrayList<>();
创建该类的实例split,并将每个值解析为您创建的while(s.hasNext())
{
String nextLine = s.nextLine();
RoomData roomData = new RoomData();
实例中的相应变量。
RoomData
String[] values = nextLine.split(" ") // split by space
// lets say you have "0 false David 0 false"
// values[0] would be "0"
// values[1] would be "false"
// values[2] would be "David"
// values[3] would be "0"
// values[4] would be "false"
中的所有值都是values
类型,您需要将这些值从String转换为您在String
中定义的类型,对于int,您可以使用{{3}对于boolean,有一个类似的方法(Boolean.parseBoolean(String s))[Integer.parseInt(String s),可以直接设置字符串值。
将该实例添加到arraylist。
RoomData
添加getter方法以返回该列表以供在其他类中使用。
list.add(roomData);
} // end of while