Spencer Bochantin Spencer Bochantin - 6 months ago 8
Java Question

Java - Help converting letter to integer, adding 5, then converting back to letter

First off, here is my code so far

public int encrypt() {
/* This method will apply a simple encrypted algorithm to the text.
* Replace each character with the character that is five steps away from
* it in the alphabet. For instance, 'A' becomes 'F', 'Y' becomes '~' and
* so on. Builds a string with these new encrypted values and returns it.
*/

text = toLower;
encrypt = "";
int eNum = 0;

for (int i = 0; i <text.length(); i++) {
c = text.charAt(i);
if ((Character.isLetter(c))) {

eNum = (int) - (int)'a' + 5;

}
}


return eNum;
}


(text is the inputted string by the way. And toLower makes the string all lower case to make it easier converting.)

I got most of my assignment done, but one part of it is tasking me with moving every letter inputted 5 spaces over. A becomes F, B becomes G, etc.

So far from I got the letter converted to a number, but I am having trouble adding to it and then returning it back to a letter.

When I run the program and I enter my input such as "abc" I get '8'. It just adds them all up.

Any help would be much appreciated, and I can post the full code if necessary.

Answer

Few issues -

  1. First of all - eNum = (int) - (int)'a' + 5; you do not need the first (int) - i believe, you can just do - eNum = (int)c + 5; . Your expression would always result in a negative integer.

  2. Instead of returning eNum you should convert it to character and add it to a string and return the string at end (or you can create a character array of same length as string , keep storing the characters in the array, and return a string created from the character array).

  3. Instead of using a in the condition , you should use c which denotes the current character at the ith index.

  4. I am guessing not all of the variables in your code are member variables (instance variables) of the class , so you should define them with a datatype in your code.

Example changes to your code -

String text = toLower; //if toLower is not correct, use a correct variable to get the data to encrypt from.
        String encrypt = "";

    for (int i = 0; i <text.length(); i++) {
        char c = text.charAt(i);
        if ((Character.isLetter(c))) {

       encrypt += (char)((int)c + 5);

        }  
    }


   return encrypt;