#java #loops #compare #back
#java #циклы #Сравнить #Назад
Вопрос:
Я столкнулся с небольшой проблемой во время работы над своим заданием. По сути, я создаю небольшую программу, которая запрашивает у пользователя 3 буквы и сравнивает их с 3 буквами, которые закодированы. Затем предполагается, что программа сравнивает 3 буквы и, если они совпадают, выводит true. До сих пор мне удавалось делать это без проблем compareTo
, но теперь сложная часть заключается в том, что мне нужно добавить «допуск» к программе (который у меня есть), но предполагается, что допуск возвращается от Z к A. Итак, если допуск равен 3, а пользователь вводит X Y Z (когда это действительно B C), он все равно должен выводить значение true.
ПРИМЕЧАНИЕ: допуск не будет превышать 3. КРОМЕ того, мы не должны использовать массивы.
Есть идеи, как я могу это сделать? Если сложно понять, о чем я спрашиваю, пожалуйста, напишите, и я постараюсь прояснить это 🙂
Спасибо
РЕДАКТИРОВАТЬ: в основном это код, который сравнивает допуски
if ((a1.compareTo(d1) <= tolerance) amp;amp; (a1.compareTo(d1) >= negTolerance)
amp;amp; (b1.compareTo(e1) <= tolerance) amp;amp; (b1.compareTo(e1) >= negTolerance)
amp;amp; (c1.compareTo(f1) <= tolerance) amp;amp; (c1.compareTo(f1) >= negTolerance))
{
open = true;
} else open = false;
где a1 — c1 — это предварительно введенные символы, а d1-f1 — введенные пользователем. допуск также вводится пользователем как целое число от 1 до 3
Комментарии:
1. Если это домашнее задание, пожалуйста, добавьте тег «домашнее задание».
2. Не могли бы вы включить таблицу тестовых наборов? Вы упоминаете, что «X Y Z» должно соответствовать «A B C», но я понятия не имею, что не должно соответствовать «A B C».
3. это проект, и допуск в основном зависит от того, насколько пользователь может быть отключен, чтобы все еще печатать true
4. и x y z и a b c — это всего лишь примеры, в основном введенные буквы должны находиться в пределах «допуска» или значения ошибки закодированных букв. Например, между a и b допуск равен 1, между g и m — 5. теперь мне нужно, чтобы это было между a и z = 1, a и y = 2, a и x = 3 и т. Д
5. Добавьте свой код, мы поможем вам разобраться с ним.
Ответ №1:
Поскольку это домашнее задание, я не дам вам полного ответа, но дам подсказку. Вы хотите посмотреть коды символов (ASCII) для букв. Это позволит вам решить проблему допуска. Возможно, вам также придется поколдовать с %
(modulus), чтобы обработать обратный цикл от Z до A.
Редактировать
Если вы не можете использовать значения ASCII compareTo
, вам поможет возвращаемое значение, но имейте в виду, что сравнение A
с Z
и Z
с A
даст вам -25 и 25 соответственно. Здесь %
вам поможет оператор.
Комментарии:
1. ну, это не все задание, это всего лишь очень небольшая его часть, но я думал попробовать это, но мы так и не научились использовать ASCII в Java, поэтому я не могу его использовать:(
2. Ваш учитель специально сказал вам, что вы не можете использовать значения ASCII?
3. Нет, мой профессор этого не говорил, но он не ожидал, что мы это узнаем, если мы еще не изучили это в курсе. Мы еще даже не сделали массивы
4. Спасибо, но я понял это без%, используя только простые операторы if. К сожалению, я не могу ответить на свой собственный вопрос, но через 7 часов я опубликую метод, который он, скорее всего, ожидает от нас. в принципе, если сравнение 2 букв равно 24 (или -24), tolernace = 1, и то же самое для 23 и 22
Ответ №2:
Я бы рекомендовал использовать значение символа в формате ASCII.
char[] expecteds = ...;
int tolerance = 3;
char input = ...;
int inputValue = char;
for (int i=0; i<expecteds.length; i ){
int delta = expected[0] - 'a' - input - 'a' % 'a';
if (i < tolerance)
result = true;
}
Ответ №3:
Используйте оператор модуля (%), чтобы вернуться к началу:
int index = 0;
for (i in 1 .. 26) {
int index = (i tolerance) % 26;
}
Ответ №4:
1) Map each character to a Number
2) Grab the tolerance
3) Add/subtract the tolerance from the number
4) Compare the letters in the tolerance range to the letter
Комментарии:
1. ну, мне было проще получить допуск, просто выполнив char1.compareTo(char2). За исключением того, что это означает, что разница между z и a равна 25 вместо 1