Конвертер системы счисления

Нужно сделать конвертер системы счисления. У пользователя спрашивается число, в какой оно система счисления, и в какую перевести? Конвертация должна быть с помощью класса обертки Long. Если пользователь вводит q или Q программа завершает работу.

public static void main(String[] args)
{
    Scanner sc = new Scanner(System.in);

    char letter; // q and Q
    int number; // вводимое число
    int ns; //номер системы счисления
    int nsnumb; //номер системы в которой число

    do
    {
        System.out.println("Введите число: ");
        number = sc.nextInt();
        System.out.println("В какой системе счисления число?");
        nsnumb = sc.nextInt();
        System.out.println("Введите систему счисления: ");
        ns = sc.nextInt();

        switch (ns)
        {
            case 2:
                String convert = Long.toBinaryString(number);
                System.out.println("Двоичная система: " + convert);
                break;
            case 8:
                convert = Long.toOctalString(number);
                System.out.println("Воьмиричная система: "+ convert);
                break;
            case 16:
                convert = Long.toHexString(number).toUpperCase();
                System.out.println("Шестнадцатеричная система: " + convert);
        }
        letter = sc.next().charAt(0);

    }while(letter != 'q' && letter != 'Q');
} 

Подскажите как модифицировать код чтоб конвертация происходила в любых направлениях?


Ответы (1 шт):

Автор решения: Sergey Zh.
Scanner sc = new Scanner(System.in);
long number; // вводимое число
int ns; //номер системы счисления
int nsnumb; //номер системы в которой число
System.out.println("В какой системе счисления число?");
nsnumb = Integer.parseInt(sc.nextLine());
System.out.println("Введите число: ");
number = Long.parseLong(sc.nextLine(), nsnumb);
System.out.println("Введите систему счисления: ");
ns = sc.nextInt();
System.out.println("Полученое число " + Long.toString(number, ns));

Переводит число из любой системы счисления в любую другую с помощью обёртки Long.

→ Ссылка