2017-01-11 2 views
-4

Je suis nouveau à Java et c'est une question très basique. Ceci est une très petite partie du programme. Voici ce que je dois faire:
L'utilisateur entre un nombre (1-26) dans keyLength comme un cryptage. Si le nombre est 1, secretletter serait un; si son 2 il serait b, et ainsi de suite jusqu'à z où il sera 26.Questions de base

Ce que je veux savoir est que, est-il une meilleure façon de le faire:

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

Ce que je fait est ci-dessous, mais ma boucle est erronée et je me retrouve toujours avec 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: Je trouve mon erreur et @that autre gars m'a aidé aussi bien

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

'char secretLetter = 'a' + keyLength - 1; ' –

+0

Peut-être aussi envisager d'avoir un regard sur [cette question précédente] (http://stackoverflow.com/questions/41580795/cant-shift-caesar -cipher-by-more-than-1) – MadProgrammer

+0

Ce que vous faites est faux. Indice: 'String' est un tableau' char'acter. Donc, dans la boucle for, essayez de changer chaque caractère avec la secretletter. –

Répondre

0

Vous pouvez jeter un oeil à Oracle documentation pour l'instruction switch.

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 est pour le code qui peut être réellement exécuté par le navigateur, donc cet outil est pour les exemples CSS/JavaScript/HTML. Pour Java, utilisez code-sample (icône {{} dans le menu des éditeurs). (2) 'char key = '';' ne compilera pas puisque '''' n'est pas un caractère valide. – Pshemo

+0

mise à jour réponse :) –