2017-01-11 9 views
-4

Я новичок в Java, и это очень простой вопрос. Это очень небольшая часть программы. Вот что мне нужно сделать:
Пользователь вводит номер (1-26) в keyLength в качестве шифрования. Если число равно 1, secretletter будет; если его 2 он будет б, и так далее до тех пор, г, где он не будет 26.Основные вопросы

То, что я хочу знать, что есть лучший путь, чем это:

if (keyLength==1){ 
    secretletter=a; 
if (keyLength==2){ 
    secretletter=b; 

То, что я сделано ниже, но мой цикл for неправильный, и я всегда заканчиваю z.

public static char secret(String str,int keyLength){ 
    char secretletter = 0; 
    if (keyLength>=0 && keyLength<27){ 
     for(char i='a'; i<='z';i++){ 
      secretletter=i; 
     } 
    } 
    return secretletter; 
} 

EDIT: Я нашел ошибку и @that другой парень помог мне, а

secretletter=(char)('a'+ keyLength - 1); 
+1

'символ secretLetter = 'а' + Длина ключа - 1;' –

+0

Может также рассмотреть возможность взглянуть на [этой] предыдущий вопрос (http://stackoverflow.com/questions/41580795/cant-shift-caesar -cipher-by-more-than-1) – MadProgrammer

+0

Что вы делаете неправильно. Подсказка: 'String' является массивом' char'acter. Поэтому в цикле for попытайтесь изменить каждого персонажа с помощью секретного письма. –

ответ

0

Вы можете захотеть взглянуть на Oracle documentation для оператора коммутатора.

public static char secret(int keyLength){ 
    char key; 
    switch (keyLength) { 
    case 1: key = 'a'; 
     break; 
    case 2: key = 'b'; 
     break; 
    case 3: key = 'c'; 
     break; 
    ........ 
    default: key = 'z'; 
     break; 
    } 
    return key; 
} 
+0

(1) code-snippet предназначен для кода, который может быть фактически запущен браузером, поэтому этот инструмент предназначен для примеров CSS/JavaScript/HTML. Для Java используйте code-sample (значок '{}' в меню редакторов). (2) 'char key = '';' не будет компилироваться, так как '' '' недопустимый символ. – Pshemo

+0

обновленный ответ :) –