慕無忌1623718
2023-05-10 15:37:07
我正在用 Java 開發(fā) Connect4 游戲,但我在使用 Logger 時遇到了問題。我不知道為什么在其他類型的印刷品之間在不同的地方印刷廣告。public void setPlacement(Move lastMove){ Logger.getGlobal().info("Player" + lastMove.getPlayerIndex() + " placed a checker in position : " + lastMove.toString()); display();}方法 display() 只是打印游戲的網(wǎng)格。這是上述方法的輸出:| 1 | 2 | 3 | 4 | 5 | 6 | 7 || - | - | - | - | - | - | - || - | - | - | - | - | - | - || - ago 01, 2019 6:10:24 PM it.unicam.cs.pa.connectFour.GameViewsetPlacementINFO: Player1 placed a checker in position : column 4, row 5| - | - | - | - | - | - || - | - | - | - | - | - | - || - | O | O | O | - | - | - || O | X | X | X | - | - | - |*****************************有人能解釋一下為什么記錄器會這樣嗎?
1 回答

茅侃侃
TA貢獻1842條經(jīng)驗 獲得超21個贊
具體來說,您的控制臺同時顯示兩個輸出流,發(fā)送到不同流的消息之間沒有順序保證。
使 Logger 能夠?qū)懭霕?biāo)準(zhǔn)輸出流的一種方法是創(chuàng)建您自己的StreamHandler并將您的 Logger 配置為將輸入發(fā)送到處理程序。您可能還必須禁用父處理程序以避免重復(fù)輸出。您可能還希望確保輸出主動發(fā)送到所需的輸出流,如下所示:
Handler h = new StreamHandler(System.out, formatter)
? ? {
? ? ? ? public void publish(LogRecord record)
? ? ? ? {
? ? ? ? ? ? if(record == null)
? ? ? ? ? ? ? ? return;
? ? ? ? ? ? super.publish(record);
? ? ? ? ? ? super.flush();
? ? ? ? }
? ? };
添加回答
舉報
0/150
提交
取消