求助,编写一段简单的加密代码遇到的问题

作者描述了在实现一个加密规则函数时,遇到的问题,涉及到数字加1处理(非9变0,9变1),字母移位(z和Z循环),以及特殊字符保持不变。他们提供并分析了两种代码尝试,但实际输出与预期不符,寻求帮助解决代码逻辑问题。
  • 加密规则: 对于数字,如果不是 9,在原来的基础上加 1,比如 5 变成 6,3 变成 4;如果是 9,变成 0; 对于字母字符,字符需要保留大小写,如果是非 z 字符,向右移动一个,比如 d 变成 e,G 变成 H;如果是 z(Z),z->a,Z-A; 对于非字母字符,比如 '、&、^, 保留不变,中文也保留不变。

这是我写的代码,在处理中文字符和部分特殊字符时发生错误

    public static char JudgeChar(char ch){
        if(Character.isDigit(ch)){
            if(ch != '9'){
                return (char)(ch+1);
            }else{
                return '0';
            }
        }
        if(Character.isLetter(ch)){
            if(ch == 'z'){
                return 'a';
            }else if(ch == 'Z'){
                return 'A';
            }else{
                return (char)(ch+1);
            }
        }else{
            return ch;
        }
    }
错误信息图片上传失败,只能手动打出来。

预期输出:get90!@#$去t

实际输出:get9:!@#$厼t

预期输出:etgg$%*gtgetdte未来

实际输出:etgg$%*gtgetdte末杦

这是我找到的答案的代码

    public static char JudgeChar(char ch){
        if(ch>='0'&&ch<'9'){
            ch++;
        }
        else if(ch=='9'){
            ch='0';
        }
        else if((ch>='a'&&ch<'z')||(ch>='A'&&ch<'Z')){
            ch++;
        }
        else if(ch=='z'){
            ch='a';
        }
        else if(ch=='Z'){
            ch='A';
        }
        return ch;
    }


我感觉我的编写逻辑好像没什么问题啊,也求助过ai,好像没什么毛病,但是实际写作业时无法通过关卡,请大神指导一下问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值