java—检查一个值是否等于另一个值,如果为真,则返回另一个值

luaexgnf  于 2021-06-27  发布在  Java
关注(0)|答案(1)|浏览(440)

大家好,我有个问题,
我正在尝试使用ascii表来加密和解密最终由用户键入的消息。
ascii表格
我这里有基本加密码
当代码到达z或z时,shift分别显示{和[当我试图让代码分别循环回a和a时
z-->a not{z-->a not[
我不太清楚我的措辞,请问您是否需要澄清

n1bvdmb6

n1bvdmb61#

你正在编写的密码是凯撒密码。
下面是我不久前编写的一个实现:

  1. public class Main {
  2. public static void main(String[] args) {
  3. System.out.println(caesar("hello", 1));
  4. }
  5. public static String caesar(String text, int offset) {
  6. String output = "";
  7. char outputchar;
  8. for (int i = 0; i < text.length(); i++) {
  9. if (isLetter(text.charAt(i))) {
  10. outputchar = (char) (text.charAt(i) + offset);
  11. if (Character.isUpperCase(text.charAt(i))) {
  12. if ((!isLetter(outputchar)) || (Character.isLowerCase(outputchar))) {
  13. outputchar = (char) (outputchar - 26);
  14. }
  15. } else {
  16. if ((!isLetter(outputchar)) || (Character.isUpperCase(outputchar))) {
  17. outputchar = (char) (outputchar - 26);
  18. }
  19. }
  20. output += outputchar;
  21. } else {
  22. output += text.charAt(i);
  23. }
  24. }
  25. return output;
  26. }
  27. public static boolean isLetter(char letter) {
  28. return ((letter >= 97) && (letter <= 122) || (letter >= 65) && (letter <= 90));
  29. }
  30. }

它通过检查 char 在它所属的范围内,包括案例更正。

展开查看全部

相关问题