Здравствуйте, и так и сяк пробовал победить проверку задачи. Подставлял любые значения в десятичной, проверял через другие конверторы. Все работает исправно. Скорее всего что-то с проверкой принимаемого значения int. Подскажите в чем ошибка:
public static String toHex(int decimalNumber) {
String result = "";
if(decimalNumber>0){
int temp = 0;
while(decimalNumber/16!=0){
temp = decimalNumber%16;
decimalNumber /= 16;
if(temp<10){
result+=temp;
}else if(temp>=10 && temp<=15){
result+=HEX.charAt(temp);
}
if(decimalNumber<16){
result+=HEX.charAt(decimalNumber);
}else if(temp==0&&decimalNumber<10){
result+=temp;
}
}
result = new StringBuilder(result).reverse().toString();
return result;
}else return null;
}package com.javarush.task.pro.task09.task0907;
import java.util.regex.Pattern;
/*
Шестнадцатеричный конвертер
*/
public class Solution {
private static final String HEX = "0123456789abcdef";
public static void main(String[] args) {
int decimalNumber = 1256;
System.out.println("Десятичное число " + decimalNumber + " равно шестнадцатеричному числу " + toHex(decimalNumber));
String hexNumber = "4e8";
System.out.println("Шестнадцатеричное число " + hexNumber + " равно десятичному числу " + toDecimal(hexNumber));
}
public static String toHex(int decimalNumber) {
String result = "";
if(decimalNumber>0){
int temp = 0;
while(decimalNumber/16!=0){
temp = decimalNumber%16;
decimalNumber /= 16;
if(temp<10){
result+=temp;
}else if(temp>=10 && temp<=15){
result+=HEX.charAt(temp);
}
if(decimalNumber<16){
result+=HEX.charAt(decimalNumber);
}else if(temp==0&&decimalNumber<10){
result+=temp;
}
}
result = new StringBuilder(result).reverse().toString();
return result;
}else return null;
}
public static int toDecimal(String hexNumber) {
if(hexNumber!=null && hexNumber!=""){
int result = 0;
for(int i=0; i<hexNumber.length();i++){
if(Character.isDigit(hexNumber.charAt(i))){
result+=(hexNumber.charAt(i)-'0')*((int)(Math.pow(16,hexNumber.length()-i-1)));
}else if(Character.isLetter(hexNumber.charAt(i))){
char temp = hexNumber.charAt(i);
int index = HEX.indexOf(temp);
result+=(index)*((int)(Math.pow(16,hexNumber.length()-i-1)));
}
}
return result;
}else return 0;
}
}