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

RotationalCipher.java 1.2KB

1234567891011121314151617181920212223242526272829303132333435
  1. class RotationalCipher {
  2. private int shiftKey;
  3. RotationalCipher(int shiftKey) {
  4. this.shiftKey = shiftKey;
  5. }
  6. 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. * For Uppercase CaseStart = 'A' and CaseEnd = 'Z'
  21. * For Lowercase CaseStart = 'a' and CaseEnd = 'z'
  22. */
  23. private char getReplacementCharacter(char characterToReplace, char alphabetCaseStart, char alphabetCaseEnd) {
  24. char replacementCharacter = (char) (characterToReplace + shiftKey);
  25. if (replacementCharacter > alphabetCaseEnd) {
  26. replacementCharacter = (char) ((alphabetCaseStart - 1) + (replacementCharacter % alphabetCaseEnd));
  27. }
  28. return replacementCharacter;
  29. }
  30. }