JAVA我的日志文件只写出了第一个变量?
我是Java编程新手,目前正在编写Java web应用程序。当用户创建房间时,我正在尝试写日志,这是我的代码JAVA我的日志文件只写出了第一个变量?,java,Java,我是Java编程新手,目前正在编写Java web应用程序。当用户创建房间时,我正在尝试写日志,这是我的代码 public class RoomLog{ private static RoomLog instance = new RoomLog(); private RoomLog() { try { fWriter = new FileWriter("RLog.txt", true); buffWriter = new BufferedWrite
public class RoomLog{
private static RoomLog instance = new RoomLog();
private RoomLog() {
try {
fWriter = new FileWriter("RLog.txt", true);
buffWriter = new BufferedWriter(fWriter);
newLine = System.getProperty("line.separator");
}
catch(IOException ex) {
}
}
protected void finalize(){
try {
buffWriter.close();
fWriter.close();
} catch (IOException ex) {
}
}
public static RoomLog getInstance(){
return instance;
}
BufferedWriter buffWriter;
FileWriter fWriter;
static String newLine;
public void Log(String msg){
try {
buffWriter.write(msg);
buffWriter.write(newLine);
buffWriter.flush();
}catch (IOException ex) {
System.out.println("log exc");
}
}
}
这是我的房间日志代码,这是我在Servlet中的代码:
RoomLog rLog = RoomLog.getInstance();
rLog.Log(aRoom.toString());
最后,这是我的Room类中用于尝试获取所有属性的代码
@Override
public String toString(){
return String.format(getRoomName(), getRoomCode(), getRoomCapacity(), getNumOfLights(), getBuildingCode());
}
但出于某种原因,它只打印roomName,而不打印链接到它的所有其他变量 方法的第一个参数是格式字符串。您似乎忽略了这一点,使方法认为您的
getRoomName()
参数是格式字符串。使用StringBuilder
而不是string.format
StringBuilder sb = new StringBuilder();
sb.append(getRoomName()).append(getRoomCode());
sb.append(getRoomCapacity()).append(getNumOfLights());
sb.append(getBuildingCode());
return sb.toString();
我认为您使用的
格式不正确。第一个论点应该是
是一个格式字符串,然后可以有数量可变的参数(vararg
)
这将为格式字符串中标记的位置提供值
所以你的方法应该是
@Override
public String toString(){
return String.format("%s %d, %s, %d %s"
, getRoomName()
, getRoomCode()
, getRoomCapacity()
, getNumOfLights()
, getBuildingCode());
}
注:我假设这五种方法的返回类型分别为:
字符串,int,字符串,int,字符串
有关更多信息,请参阅本教程: