Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Конвертер системы счисления / 4 сообщений из 4, страница 1 из 1
28.07.2021, 18:36
    #40086894
RumaNO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертер системы счисления
Нужно сделать конвертер системы счисления. У пользователя спрашивается число, в какой оно система счисления, и в какую перевести? Конвертация должна быть с помощью класса обертки Long. Если пользователь вводит q или Q программа завершает работу.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
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');
} 



Подскажите как модифицировать код чтоб конвертация происходила в любых направлениях?
...
Рейтинг: 0 / 0
28.07.2021, 18:46
    #40086896
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертер системы счисления
Integer.parseInt покрывает часть этого технического задания. От двоичной до 36-ричной.

https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html#parseInt-java.lang.String-int-

Но я-бы обратил внимание на то что input и output должны иметь символьное а не числовое представление.

P.S. Кроме того есть системы счисления такие как Римская (непозиционная), Унарная (только едички как символы)
и тоже непозционная и прочие которые тоже могут быть интересны для конверсии base64, base85, Вавилонская.
...
Рейтинг: 0 / 0
28.07.2021, 18:51
    #40086897
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертер системы счисления
Учитесь пользоваться документацией. API класса Long не настолько обширно, чтобы там нельзя было найти требуемое в районе toString().

P.S.
Ну и по логике напрашивается цикл с предусловием.
...
Рейтинг: 0 / 0
01.08.2021, 17:23
    #40087642
Valentin Kolesnikov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертер системы счисления
Решение для перевода 10-ой в 16-ти ричную системы.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
class Solution {
    public String toHex(int num) {
        if (num == 0) {
            return "0";
        }
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < 8; i++) {
            switch (num & 15) {
                case 0:  sb.insert(0, "0");
                     break;
                case 1:  sb.insert(0, "1");
                     break;
                case 2:  sb.insert(0, "2");
                     break;
                case 3:  sb.insert(0, "3");
                     break;
                case 4:  sb.insert(0, "4");
                     break;
                case 5:  sb.insert(0, "5");
                     break;
                case 6:  sb.insert(0, "6");
                     break;
                case 7:  sb.insert(0, "7");
                     break;
                case 8:  sb.insert(0, "8");
                     break;
                case 9:  sb.insert(0, "9");
                     break;
                case 10:  sb.insert(0, "a");
                     break;
                case 11:  sb.insert(0, "b");
                     break;
                case 12:  sb.insert(0, "c");
                     break;
                case 13:  sb.insert(0, "d");
                     break;
                case 14:  sb.insert(0, "e");
                     break;
                case 15:  sb.insert(0, "f");
                     break;
            }
            num = num >> 4;
            if (num == 0) {
                break;
            }
        }
        return sb.toString();
        
    }
}



Хорошего вам дня!
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Конвертер системы счисления / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]