私は、クラスで見ていた命令セット用の 2 パス アセンブラを構築する必要があるクラス プロジェクトに取り組んでいます。
最初のパス関数では、コードの一部は次のようになります。
//If the fourth character is a comma, then it follows that the line contains a label.
if (line.indexOf(',') == 3) {
//Store symbol in address-symbol table together with value of location counter
String symbolTableLine = line.substring(0,3) + " " + String.format("%03X", Integer.toHexString(locCounter)) + "\r\n";
symbolTable[symbolTablePos] = symbolTableLine;
writerSymbTable.write(symbolTableLine);
//Increment the location counter and the current position in symbol table
locCounter++;
symbolTablePos++;
私の問題は、次の関数呼び出しにあります。
String.format("%03X", Integer.toHexString(locCounter))
この目的は、ロケーション カウンターを 16 進数の文字列 ("AA"、"0"、または "F" など) に変換し、16 進数の文字列が 3 桁の長さ ("0AA"、"000") になるまで、プレースホルダーとしてゼロを追加することです。 "、"00F")
問題は、私がこの例外を受け取っていることです:
Exception in thread "main" java.util.IllegalFormatConversionException: x != java.lang.String
これは、何らかの理由で 16 進数の文字列を取り込んでいないことを意味します。しかし、なぜそれが16進数の文字列にならないのか理解できないようです。つまり、Integer.toHexString()を使用していることを意味します...
どんな助けでも感謝します、ありがとう。これだけのコードでは不十分な場合は、必要に応じてさらに多くのコードを投稿できます。