Commit 2fff3ac5 authored by neil.whitehead's avatar neil.whitehead

12:19 10/12/18

parent 39bb1959
public class AssessmentPartThree {
public class AssessmentPartThree
{
// The simplest form of encryption is the rotation cipher (also known as Caeser's Cipher)
// An offset value is chosen to encrypt a message. Each letter is replaced by the
......@@ -17,25 +18,31 @@ public class AssessmentPartThree {
// Lower case characters remain lower case, upper case remain upper case
// Any other characters are returned unchanged
//Uppercase characters
if((theChar >= 65) && (theChar <= 90)) //65 to 90 = A to B
{
theChar = (char) (((theChar - 65 + theOffset) % 26) + 65);
}
//Lowercase characters
else if((theChar >= 97) && (theChar <= 122)) // 97 to 122 = a to b
{
theChar = (char) (((theChar - 97 + theOffset) % 26) + 97);
}
/*
theChar = (char) (((theChar - 97 + theOffset) % 26) + 97); formulae
(theChar - 97 - ASCII a/A to give value between 1 and 26
+ theOffset) + the offset value
( % 26) % modulo ensures value is always between 1 and 26
( + 97) + ASCII a/A to return result to ASCII char
(char) result needs to be casted to char
*/
return theChar;
//Dealing with negative offsets
theOffset = (theOffset < 0) ? 26 + theOffset : theOffset;
//ensures that the offset will "wrap around"
//Uppercase characters
if((theChar >= 65) && (theChar <= 90)) //65 to 90 = A to B
{
theChar = (char) (((theChar - 65 + theOffset) % 26) + 65);
}
//Lowercase characters
else if((theChar >= 97) && (theChar <= 122)) // 97 to 122 = a to b
{
theChar = (char) (((theChar - 97 + theOffset) % 26) + 97);
}
/*
theChar = (char) (((theChar - 97 + theOffset) % 26) + 97); formulae
(theChar - 97 - ASCII a/A to give value between 1 and 26
+ theOffset) + the offset value
( % 26) % modulo ensures value is always between 1 and 26
( + 97) + ASCII a/A to return result to ASCII char
(char) result needs to be casted to char
*/
return theChar;
//any non alphabetical chars will fall through and return original char
}
......@@ -45,15 +52,15 @@ public class AssessmentPartThree {
// Complete this method so that it uses encryptedCharacter to
// return the encrypted version of theMessage using theOffset
char chaMessageArr[] = theMessage.toCharArray();
char[] chaResultArr = new char[chaMessageArr.length];
char chaMessageArr[] = theMessage.toCharArray();
char[] chaResultArr = new char[chaMessageArr.length];
//initialising Arrays
for(int i = 0; i < chaMessageArr.length; i++)
//loop to run through each character in encrypted message
{
chaResultArr[i] = enryptedCharacter(chaMessageArr[i], theOffset);
//passing each character to decryption method and saving result in array
chaResultArr[i] = enryptedCharacter(chaMessageArr[i], theOffset);
//passing each character to decryption method and saving result in array
}
return (new String(chaResultArr));
......
......@@ -23,7 +23,10 @@ class AssessmentPartThreeTest {
"q,-3,n",
"G,6,M",
"5,-3,5",
"T,-7,M"
"T,-7,M",
"a,31,f",
"T,-33,M",
"!, 2, !"
})
void testEnryptedCharacter(char theChar, int theOffset, char encChar) {
assertEquals(encChar,test.enryptedCharacter(theChar, theOffset));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment