Maison  >  Article  >  Java  >  À quels problèmes faut-il prêter attention lors de l’utilisation de MessageFormat en Java ?

À quels problèmes faut-il prêter attention lors de l’utilisation de MessageFormat en Java ?

WBOY
WBOYavant
2023-04-22 20:31:061184parcourir

Dépannage

Après l'avoir regardé pendant un moment, je n'en ai toujours aucune idée. À ce moment-là, j'ai commencé à paniquer. J'ai rapidement regardé le dossier de soumission et confirmé que le code n'avait pas été écrit par moi, donc je me sentais un peu plus calme si d'autres le demandaient, il serait facile de dire qu'il n'a pas été écrit par moi ! Même si je n'ai pas écrit le code, je dois quand même examiner le problème. Après tout, après avoir reçu l’argent, vous devez travailler.

La prochaine étape consiste à analyser le code. Tout d’abord, nous avons analysé l’erreur la plus probable, à savoir l’analyse de la logique de réponse de la requête de commande. En analysant le code à cet endroit ainsi que les résultats obtenus en exécutant manuellement la commande, nous avons constaté que les résultats de la réponse peuvent être obtenus normalement sur la base de ce résultat de réponse. Après l'avoir regardé pendant un moment, je n'ai trouvé aucun problème. Ensuite, j'ai regardé le code d'épissage des commandes. La logique d'épissage n'est qu'une seule ligne, il ne devrait donc y avoir aucun problème. Je n'ai eu d'autre choix que de consulter à nouveau le journal. Cette fois, j'ai découvert qu'il y avait une commande à imprimer, à envoyer et à exécuter dans le journal. En y regardant de plus près, je me demande pourquoi y a-t-il une virgule supplémentaire ? Il frotta à nouveau ses lunettes pour s'assurer qu'il voyait bien.

Pour le moment, je vais revenir en arrière et regarder le code. Il y a quelque chose qui ne va pas avec ce MessageFormat, mais je ne trouve aucune preuve pour le 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());
}
Puis je me suis soudainement souvenu d'un wiki que j'avais vu auparavant, qui semblait avoir des notes sur la description du MessageFormat. Je suis rapidement allé vérifier, et bien sûr, il a été écrit que lorsque le paramètre de MessageFormat est de type numérique, et que le nombre dépasse 3 chiffres, une virgule supplémentaire sera ajoutée tous les 3. chiffres. Par conséquent, selon la logique de code ci-dessus, ce que nous obtenons est show index 1,035. Il y a une virgule anglaise supplémentaire dans le résultat et les données ne peuvent pas être trouvées en exécutant manuellement la commande spliced. L'affaire est enfin résolue, étalez les fleurs, étalez les fleurs, étalez les fleurs ! ! !

Comment résoudre🎜🎜La première méthode consiste à convertir le nombre en chaîne, puis à le formater comme suit : 🎜rrreee🎜La deuxième méthode consiste à ajouter MessageFormat . FormatStyle, 🎜Modifiez le code ci-dessus comme suit : 🎜🎜rrreee

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer