Nachdem ich eine Weile gesucht hatte, hatte ich immer noch keine Ahnung. Zu diesem Zeitpunkt geriet ich in Panik. Ich habe mir schnell die Einreichungsaufzeichnung angesehen und festgestellt, dass der Code nicht von mir geschrieben wurde. Wenn andere fragen würden, wäre es leicht zu sagen, dass er nicht von mir geschrieben wurde! Obwohl ich den Code nicht geschrieben habe, muss ich mir das Problem trotzdem ansehen. Denn nachdem man das Geld bekommen hat, muss man arbeiten.
Der nächste Schritt besteht darin, den Code zu analysieren. Zuerst haben wir den wahrscheinlichsten Fehler analysiert, nämlich das Parsen der Antwortlogik der Befehlsabfrage. Bei der Analyse des Codes an dieser Stelle und der durch manuelles Ausführen des Befehls erhaltenen Ergebnisse haben wir festgestellt, dass die Antwortergebnisse auf der Grundlage dieser Antwortergebnisse normal erhalten werden können. Nachdem ich es mir eine Weile angesehen hatte, stellte ich fest, dass es kein Problem gab. Dann habe ich mir den Befehlsspleißcode angesehen. Die Spleißlogik besteht nur aus einer Zeile, daher sollte es kein Problem geben. Mir blieb nichts anderes übrig, als noch einmal in das Protokoll zu schauen. Diesmal stellte ich fest, dass es einen Befehl zum Drucken, Senden und Ausführen im Protokoll gab. Wenn ich genauer hinschaue, frage ich mich, warum es ein zusätzliches Komma gibt. Er rieb erneut seine Brille, um sicherzustellen, dass er richtig sah.
Jetzt werde ich zurückgehen und mir den Code ansehen. Egal, wie ich mir dieses MessageFormat
ansehe, da stimmt etwas nicht, aber ich kann nichts finden Beweise für den Moment. MessageFormat
都有点问题,但是一时又找不到啥证据。
public Integer getMaxIndex() { // 返回最大的索引值 1035 } public String queyBySsh() { // 这里期望拼接的命令是 show index 1035,但是实际的命令却是 show index 1,035 // 最终得到的命令多了个英文的逗号 String command = MessageFormat("show index {0}", getMaxIndex()); // 通过SSH执行这个命令查询 }
后来突然想起来之前看到过的一个Wiki,好像有关于描述 MessageFormat
的注意事项。赶紧去找来看一下,果然里面有写到当 MessageFormat
的参数是数字类型时,当数字超过 3 位数字以上时,每隔 3 位会多增加一个因为的逗号。所以根据上面的代码逻辑得到的就是 show index 1,035
了,结果中多了个英文的逗号,而将这个拼接出来的命令手动执行是查不出来数据的。终于破案了,撒花,撒花,撒花!!!
第一种方法是将数字转为字符串,然后再进行格式化,将上面的代码修改为如下:
public String queyBySsh() { // 这里拼接的时候先调用一下 String.valueOf() 方法 String command = MessageFormat("show index {0}", String.valueOf(getMaxIndex())); }
第二种方法是增加 MessageFormat
的 FormatStyle
public String queyBySsh() { // 这里的 # 就是定义的 FamatStyle String command = MessageFormat("show index {0, number, #}", getMaxIndex()); }
MessageFormat
enthielt. Ich habe es mir schnell angesehen und tatsächlich stand geschrieben, dass, wenn der Parameter von MessageFormat
ein numerischer Typ ist und die Zahl mehr als 3 Ziffern umfasst, für jede 3 ein zusätzliches Komma hinzugefügt wird Ziffern. Daher erhalten wir gemäß der obigen Codelogik show index 1.035
Das Ergebnis enthält ein zusätzliches englisches Komma und die Daten können durch manuelles Ausführen des gespleißten Befehls nicht gefunden werden. Der Fall ist endlich gelöst, verbreiten Sie die Blumen, verbreiten Sie die Blumen, verbreiten Sie die Blumen! ! ! So lösen Sie #🎜🎜##🎜🎜#Die erste Methode besteht darin, die Zahl in eine Zeichenfolge umzuwandeln und sie dann wie folgt zu formatieren: #🎜🎜#rrreee# 🎜 🎜#Die zweite Methode besteht darin, den FormatStyle
von MessageFormat
hinzuzufügen. #🎜🎜#Ändern Sie den obigen Code wie folgt: #🎜🎜##🎜🎜#rrreeeDas obige ist der detaillierte Inhalt vonAuf welche Aspekte sollte bei der Verwendung von MessageFormat in Java geachtet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!