Pourquoi reçois-je des IllegalFormatConversionException en Java pour ce code?
Je suis actuellement en train de travailler sur un code qui prend de données à partir du réseau et de l'imprimer sur un JTextArea. Entre les deux, je suis en train d'alignement le nombre en fonction de la position du point décimal. C'est le code qui fonctionne avant de mettre en œuvre la virgule alignement:
private static final String NewLine = System.getProperty("line.separator");
String NetString = "";
byte[] data = p.getData();
NewString += "SID: " + BuildShort(data,4) + NewLine;
NewString += "DID: " + BuildShort(data,6) + NewLine;
Et c'est le nouveau
NewString += String.format("%-8s%11.5f" + NewLine, "SID : ", BuildShort(data,4));
NewString += String.format("%-8s%11.5f" + NewLine, "DID : ", BuildShort(data,6));
laquelle j'ai reçu le message d'erreur
Exception in thread "Thread-2" java.util.IllegalFormatConversionException: f != java.lang.Integer
at java.util.Formatter$FormatSpecifier.failConversion(Unknown Source)
at java.util.Formatter$FormatSpecifier.printFloat(Unknown Source)
at java.util.Formatter$FormatSpecifier.print(Unknown Source)
at java.util.Formatter.format(Unknown Source)
at java.util.Formatter.format(Unknown Source)
at java.lang.String.format(Unknown Source)
at MT302.ParsePacket(MT302.java:97)
at MK20_DataView.run(MK20_DataView.java:261)
at java.lang.Thread.run(Unknown Source)
Savez-vous pourquoi je reçois cette erreur?
vous avez à nous dire, ce que le type de retour de
BuildShort(data,4)
est. (Et pourquoi vous êtes de départ de la méthode/de noms de variables avec une majuscule en Java. Ce n'est pas C# ^^)OriginalL'auteur user1590710 | 2012-08-13
Vous devez vous connecter pour publier un commentaire.
Vous recevez le message d'erreur parce que votre
BuildShort
méthode retourne un entier, et que vous êtes en lui donnant un modèle de format pour un float. Il suffit de coller undouble
fonte en face d'elle, elle doit être fine:Il n'a pas d' pour prendre une double, vous avez juste dit d'attendre.
Mais pourquoi ne pas le entier à obtenir une promotion à un double automatiquement?
OriginalL'auteur davidfmatheson
vous êtes à la mise en forme en virgule flottante et non un entier. insérer un %d a la place de l' %f et il devrait fonctionner
OriginalL'auteur David Biderman
Le message d'erreur pour ces erreurs de conversion sont très mal écrit par Oracle et je ne peux pas pour la vie de me comprendre pourquoi ils aurait-il écrit dans une telle voie. Comme déjà indiqué ci-dessus, cela signifie que vous avez été en essayant de formater un nombre entier à l'aide d'un flotteur format jeton.
OriginalL'auteur Mark Aquino