lots of exercises in java... from https://github.com/exercism/java

RotationalCipher.java 1.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. public class RotationalCipher {
  2. int shiftKey;
  3. RotationalCipher(int shiftKey) {
  4. this.shiftKey = shiftKey;
  5. }
  6. public String rotate(String data) {
  7. StringBuilder dataStringBuilder = new StringBuilder();
  8. for (char c : data.toCharArray()) {
  9. if (Character.isUpperCase(c)) {
  10. dataStringBuilder.append(getReplacementCharacter(c, 'A', 'Z'));
  11. } else if (Character.isLowerCase(c)) {
  12. dataStringBuilder.append(getReplacementCharacter(c, 'a', 'z'));
  13. } else {
  14. dataStringBuilder.append(c);
  15. }
  16. }
  17. return dataStringBuilder.toString();
  18. }
  19. /**
  20. *
  21. * @param characterToReplace
  22. * @param alphabetCaseStart
  23. * @param alphabetCaseEnd
  24. * @param shiftKey
  25. * @return ReplacementCharacter
  26. *
  27. * For Uppercase CaseStart = 'A' and CaseEnd = 'Z'
  28. * For Lowercase CaseStart = 'a' and CaseEnd = 'z'
  29. */
  30. private char getReplacementCharacter(char characterToReplace,
  31. char alphabetCaseStart, char alphabetCaseEnd) {
  32. char replacementCharacter = (char) (characterToReplace + shiftKey);
  33. if (replacementCharacter > alphabetCaseEnd) {
  34. replacementCharacter = (char) ((alphabetCaseStart - 1) +
  35. (replacementCharacter % alphabetCaseEnd));
  36. }
  37. return replacementCharacter;
  38. }
  39. }