Member 13418330 Ответов: 2

Как объявить строку из четырех символов, а также использовать charat() для сравнения каждого отдельного символа


Напишите программу для преобразования 4-значного шестнадцатеричного числа в десятичное. Пользователь должен быть проинструктирован ввести 4-значное шестнадцатеричное число. Следует вывести соответствующее десятичное число (от 0 до 65 535). Обратите внимание, что значения места для 4-значного шестнадцатеричного числа слева направо равны 4096, 256, затем 16, затем 1. Вы должны ввести шестнадцатеричное число в виде строки, затем использовать метод charAt(N) для сравнения каждого отдельного символа с 'A', 'B', 'C', 'D', 'E', 'F' и '0' - '9' и добавить значение цифры, умноженное на соответствующее значение места, к общему числу.

Например, 1А3016 = 1*4096+10*256+3*16+0*1 = 670410

Сначала запросите и введите строку из четырех символов.

Если ввод не состоит из четырех символов, распечатайте соответствующее сообщение и выйдите.

Используйте операторы if, каждый из которых означает что-то вроде "Если второй символ равен 'A', то значение второй цифры равно 256 * 10". Если какой-либо символ не является '0'-'9' или 'A' - 'F', распечатайте соответствующее сообщение и выйдите.

Чтобы сравнить каждый символ входной строки с символом char, используйте = = и обязательно используйте одинарные кавычки, а не двойные.

Вы не можете использовать какие-либо встроенные методы преобразования для этой программы.

Что я уже пробовал:

публичный статический пустота главный(строка[] аргументы) {
Scanner sc = новый сканер(System.in);
Строка шестнадцатеричная;
инт персонажей;
Системы.из.код println("введите четырехзначное число HexDecimal:");
hexdecimal = СК.строки();






}


}

2 Ответов

Рейтинг:
2

Patrice T

Трудно понять, что есть что в вашем примере:

Цитата:
Например, 1А3016 = 1*4096+10*256+3*16+0*1 = 670410

- вы должны перевести 4 шестнадцатеричные цифры, но пример - 6.
- формула состоит только из 4 цифр.
- и результат находится вне диапазона (от 0 до 65 535) и не является результатом формулы.

Языки Си имеют функции для преобразования строк в числовые, и если строка правильно отформатирована, они выполняют эту работу напрямую.
"1A3016" должен быть отформатирован как " 0x1A3016"

Если вы не можете использовать эту функцию,я рекомендую создать функцию, которая переводит одну шестнадцатеричную цифру в десятичную.


Рейтинг:
0

CPallini

Ну, вы могли бы попробовать больше.
Начните преобразовывать один шестнадцатеричный символ в число.
Подсказка: если шестнадцатеричный символ, скажем h находится между '0' и '9' тогда соответствующее десятичное число (h-'0') С другой стороны, если он находится между 'A' и 'F' тогда соответствующее число равно (h-'A'+10).