8

私は現在、ネットワークからデータを取得してJTextAreaに出力するコードに取り組んでいます。その間に、小数点以下の桁数を揃えようとしています。これは、小数点の配置を実装する前に機能するコードです。

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;

そしてこれは新しいものです

NewString += String.format("%-8s%11.5f" + NewLine, "SID    : ", BuildShort(data,4));
NewString += String.format("%-8s%11.5f" + NewLine, "DID    : ", BuildShort(data,6));

エラーメッセージを受け取りました

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)

なぜこのエラーが発生するのか知っていますか?

4

3 に答える 3

11

BuildShortメソッドが整数を返し、float の書式パターンを指定しているため、エラーが発生しています。その前にキャストを貼り付けるだけdoubleで問題ありません。

NewString += String.format("%-8s%11.5f" + NewLine, "SID    : ", (double)BuildShort(data,4));
于 2012-08-13T14:41:33.033 に答える