我对 Java 编程还很陌生,目前正在编写一个 Java Web 应用程序。我目前正在尝试在用户创建房间时写出日志,这是我的代码。
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");
}
}
}
这是我的 Room 日志代码,这是我在 Servlet 中的代码:
RoomLog rLog = RoomLog.getInstance();
rLog.Log(aRoom.toString());
最后,这是我的 Room 类中的代码,用于尝试获取所有属性。
@Override
public String toString(){
return String.format(getRoomName(), getRoomCode(), getRoomCapacity(), getNumOfLights(), getBuildingCode());
}
但由于某种原因,它只打印 roomName 而不是与其链接的所有其他变量。
最佳答案
我认为您使用的格式
是不正确的。第一个参数应该
是一个格式字符串,然后可以是可变数量的参数(vararg
)
这将为格式字符串中标记的位置提供值。
所以你的方法应该是
@Override
public String toString(){
return String.format("%s %d, %s, %d %s"
, getRoomName()
, getRoomCode()
, getRoomCapacity()
, getNumOfLights()
, getBuildingCode());
}
注意:我假设这五个方法的返回类型分别是: 字符串,整数,字符串,整数,字符串。
请参阅本教程了解更多信息:
https://docs.oracle.com/javase/tutorial/java/data/numberformat.html
关于JAVA我的日志文件只写出了第一个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41751168/