Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAVA我的日志文件只写出了第一个变量?_Java - Fatal编程技术网

JAVA我的日志文件只写出了第一个变量?

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

我是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");
        }
    }

}
这是我的房间日志代码,这是我在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,字符串

有关更多信息,请参阅本教程: