我的代码输出有问题。我必须将十六进制字符串从文件转换为二进制,然后将二进制转换为十进制。然后找到芯片中的RAM错误,我还没有编码。我现在主要担心的是,当我运行程序时,我的第一个结果是正确的,但是对于其余的3进制到二进制输出,二进制字符串将自身附加到前面的二进制输出,它变成了一个长而错的二进制字符串。 / p>
public static void main(String arg[]) throws IOException {
Scanner infile = new Scanner(new File("RAMerrors.txt"));
String result = "";
String binVal; // the binary value of the Hex
while (infile.hasNextLine()) {
String line = infile.nextLine();
Scanner input = new Scanner(line);
String hex = input.next();
for (int i = 0; i < hex.length(); i++) {
char hexChar = hex.charAt(i);
switch (hexChar) {
case ('0'):
binVal = "0000";
break;
case ('1'):
binVal = "0001";
break;
case ('2'):
binVal = "0010";
break;
case ('3'):
binVal = "0011";
break;
case ('4'):
binVal = "0100";
break;
case ('5'):
binVal = "0101";
break;
case ('6'):
binVal = "0110";
break;
case ('7'):
binVal = "0111";
break;
case ('8'):
binVal = "1000";
break;
case ('9'):
binVal = "1001";
break;
case ('A'):
binVal = "1010";
break;
case ('B'):
binVal = "1011";
break;
case ('C'):
binVal = "1100";
break;
case ('D'):
binVal = "1101";
break;
case ('E'):
binVal = "1110";
break;
case ('F'):
binVal = "1111";
break;
default:
binVal = "invalid input";
break;
}
result += binVal;
}
System.out.println("Binary of " + hex + ":" + result);
System.out.println("And the decimal is " + convertBin2Dec(result) + "\n");
}
}
我的输出看起来像:
ABCDEFABC二进制文件:101010111100110111101111101010111100
小数是461184027481A00D0000的二进制:101010111100110111101111101010111100000110100000000011010000000000000000
小数是92233720368547758077A0EDF301的二进制数:101010111100110111101111101010111100000110100000000011010000000000000000011110100000111011011111001100000001
小数是92233720368547758073CDAEFFAD二进制:101010111100110111101111101010111100000110100000000011010000000000000000011110100000111011011111001100000001001111001101101011101111111110101101
小数是9223372036854775807
答案 0 :(得分:2)
您没有在支票之间清算result
变量。
如果你在while循环中声明result
,它应该可以解决你的问题。