Это код, над которым я работаю. Проблема в том, что когда я ввожу не шестнадцатеричное значение, такое как «rr» или «z», оно печатает отрицательное значение. Как я могу остановить это от этого? Кроме того, как я могу решить этот вопрос? Когда программа запускается, она просит пользователя ввести шестнадцатеричное число длин 2 (например, 1F). Наименьшее число, которое пользователь должен ввести, равно 90 (десятичный эквивалент 144), а самое большое - FF (десятичный эквивалент 255).
import java.util.Scanner;
public class HexaConverter {
public static int hex2decimal(String s)
{
String digits = "0123456789ABCDEF";
s = s.toUpperCase();
int val = 0;
for (int i = 0; i < s.length(); i++)
{
char c = s.charAt(i);
int d = digits.indexOf(c);
val = 16*val + d;
}
return val;
}
//Start of conversion method
public static void main(String args[])
{
String hexadec_num;
int dec_num, i=1, j;
int bin_num[] = new int[100];
Scanner scan = new Scanner(System.in);
System.out.print("Please enter a Hexadecimal Number: ");
hexadec_num = scan.nextLine();
final int MAX_LENGTH = 2;
if(String.valueOf(hexadec_num).length() <= MAX_LENGTH) {
/* first convert the hexadecimal to decimal */
dec_num = hex2decimal(hexadec_num);
System.out.print("Equivalent Dec Number is : "+ dec_num);
System.out.println();
/* now convert the decimal to binary */
while(dec_num != 0)
{
bin_num[i++] = dec_num%2;
dec_num = dec_num/2;
}
System.out.print("Equivalent Binary Number is : ");
System.out.print("\n");
for(j=i-1; j>0; j--)
{
System.out.print(bin_num[j]);
}
}
else
{
System.out.println("ERROR: Input number was too long");
main(args); // calling to return to the main method
}
}
}