Я предоставил решение этой проблемы.
Примечание. Я использовал операторы switch, чтобы сделать код чище, но я уверен, что вы знаете, как преобразовать их обратно в случаи if / else.Если вам нужна помощь, пожалуйста, спросите.
Примечание: я использовал StringBuilder вместо строк напрямую.Вы можете легко изменить их на строки, но я выбрал stringbuilder, потому что он делает код чище.
public static void main(String[] args) {
int dec = 31388 ;
StringBuilder hexString = new StringBuilder();
while (dec != 0){
int hexDigit = dec%16; // obtain this remainder
dec /= 16; //update dec
if (hexDigit < 10) hexString.insert(0, hexDigit);
else {
switch (hexDigit) {
case 10 :
hexString.insert(0, "A");
break;
case 11 :
hexString.insert(0, "B");
break;
case 12 :
hexString.insert(0, "C");
break;
case 13 :
hexString.insert(0, "D");
break;
case 14 :
hexString.insert(0, "E");
break;
case 15 :
hexString.insert(0, "F");
break;
default: break;
}
}
} // while
System.out.println(hexString);
}
Вывод: 7A9C
, преобразованный в блок if / else назапрос:
else {
if (hexDigit == 10) {
hexString.insert(0, "A");
} else if (hexDigit == 11) {
hexString.insert(0, "B");
} else if (hexDigit == 12) {
hexString.insert(0, "C");
} else if (hexDigit == 13) {
hexString.insert(0, "D");
} else if (hexDigit == 14) {
hexString.insert(0, "E");
} else if (hexDigit == 15) {
hexString.insert(0, "F");
}
}
Используя строки, решение:
public static void main(String[] args) {
int dec = 31388;
String answer = "";
while (dec != 0){
int hexDigit = dec%16; // obtain this remainder
dec /= 16; //update dec
if (hexDigit < 10) {
answer = hexDigit + answer;
}
else {
if (hexDigit == 10) {
answer = "A" + answer;
} else if (hexDigit == 11) {
answer = "B" + answer;
} else if (hexDigit == 12) {
answer = "C" + answer;
} else if (hexDigit == 13) {
answer = "D" + answer;
} else if (hexDigit == 14) {
answer = "E" + answer;
} else if (hexDigit == 15) {
answer = "F" + answer;
}
}
} // while
System.out.println(answer);
}