Sultan
16 уровень

Codes, inc; Room #006

Статья из группы Архив info.javarush
участников

Клавиатура

Codes, inc; Room #006 - 1 Для данной буквы латинского алфавита нужно вывести справа стоящую букву на стандартной клавиатуре. При этом клавиатура замкнута, т.е. справа от буквы «p» стоит буква «a», от буквы «l» стоит буква «z», а от буквы «m» — буква «q». Напишите функцию public static char nextOnKeyboard(char c), которая возвращает букву стоящую справа от заданной буквы, с учетом замкнутости клавиатуры
Комментарии (15)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Sultan
Уровень 16
27 августа 2014, 22:12
Мое решение:
public static char nextOnKeyboard(char c) {
    return "snvfrghjoklzqmpawtdyibecux".charAt(c - 'a');
}
ToxyGenn
Уровень 20
27 августа 2014, 22:27
КАК до этого можно было додуматься?! :)
Docktor91
Уровень 40
27 августа 2014, 22:34
методом подбора)
terranum
Уровень 28
27 августа 2014, 22:50
круто) А как оно работает?))
Sultan
Уровень 16
27 августа 2014, 22:56
сначала примерно так было:
public static char nextOnKeyboard(char ch) {
    String keyboard = "qwertyuiopasdfghjklzxcvbnmq";
    return keyboard.charAt(keyboard.indexOf(ch) + 1);
}

Хотел одним return, без лишних переменных и одной строкой "..." решить.
Подумал для каждой буквы алфавита по ее номеру сопоставить нужную.
Сначала по алфавиту смотрел на клавиатуру и добавлял по нужной букве(a — s, b — n, c — v,..).
Потом уже догадался, что можно было получить необходимую строку таким куском кода:
for (char ch : "abcdefghijklmnopqrstuvwxyz".toCharArray()) {
    System.out.print(nextOnKeyboard(ch));
}
, используя старый метод onKeyBoard()
Sultan
Уровень 16
27 августа 2014, 22:57
да, я на сайте, где задание нашел, там же и сдал, приняли.
Docktor91
Уровень 40
27 августа 2014, 19:46
public static char nextOnKeyboard(char letter)
{
    String alphabet = "qwertyuiopasdfghjklzxcvbnmq";
    int index = alphabet.indexOf(String.valueOf(letter).toLowerCase())+1;
    index=index !=0 ? index : -1;
    return alphabet.charAt(index);
}
terranum
Уровень 28
27 августа 2014, 20:12
Doc, а ты какой левл?
Docktor91
Уровень 40
27 августа 2014, 20:20
27… помойму))
Sultan
Уровень 16
27 августа 2014, 20:24
index=index !=0? index: -1;
если каким-то образом, который ты похоже допускаешь возможным(я сам пока не уверен, произойдет ли он), index окажется равен 0, ты присваиваешь ему -1, а потом вызываешь alphabet.charAt(index);
Это норма?
Docktor91
Уровень 40
27 августа 2014, 20:30
в моем примере индекс неможет быть нулевым(если он ноль то indexOf вернул -1), я передаю его дальше потому что там ексепшн вылетит, хоть и про пределы индекса… но в приделах задачи и такой пойдет, главное что программка повалится… конечно правильней будет кинуть иллегалАргумент
тогда так
if (index==0) throw new IllegalArgumentException(«this is not right key»);
terranum
Уровень 28
27 августа 2014, 20:58
А ты Sultan какого левела?!)
Docktor91
Уровень 40
27 августа 2014, 21:40
Во ты у всех спрашиваешь а про свой не рассказываешь…
Sultan
Уровень 16
27 августа 2014, 21:51
16, но у меня не куплена полная версия
terranum
Уровень 28
27 августа 2014, 22:52
20, сегодня целый день над бонусом крехчу-пыхчу)