Подскажите, почему не проходит второе условие?
Проверка на пустую строку - сделана
Проверка на недопустимые символы - сделана
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));
System.out.println(toDecimal(null));
}
public static String toHex(int decimalNumber) {
int digit;
StringBuffer hexNumber = new StringBuffer("");
while (decimalNumber > 0) {
digit = decimalNumber % 16;
hexNumber.insert(0,converter(digit));
decimalNumber /= 16;
}
return hexNumber.toString();
}
public static int toDecimal(String hexNumber) {
if (hexNumber == null) {
return 0;
}
String digit = "";
int decimalNumber = 0;
boolean isHexNumber = true;
for (int i = 0; i < hexNumber.length(); i++){
digit = hexNumber.substring(hexNumber.length()-1-i, hexNumber.length()-i);
if (converter(digit) == -1) {
isHexNumber = false;
break;
}
decimalNumber += converter(digit) * (int)Math.pow(16, i);
}
return (isHexNumber) ? decimalNumber : 0;
}
public static String converter(int value) {
switch (value) {
case 0:
return "0";
case 1:
return "1";
case 2:
return "2";
case 3:
return "3";
case 4:
return "4";
case 5:
return "5";
case 6:
return "6";
case 7:
return "7";
case 8:
return "8";
case 9:
return "9";
case 10:
return "a";
case 11:
return "b";
case 12:
return "c";
case 13:
return "d";
case 14:
return "e";
case 15:
return "f";
default:
return "-1";
}
}
public static int converter(String value) {
switch (value) {
case "1":
return 1;
case "2":
return 2;
case "3":
return 3;
case "4":
return 4;
case "5":
return 5;
case "6":
return 6;
case "7":
return 7;
case "8":
return 8;
case "9":
return 9;
case "a":
return 10;
case "b":
return 11;
case "c":
return 12;
case "d":
return 13;
case "e":
return 14;
case "f":
return 15;
default:
return -1;
}
}
}