- 加密规则: 对于数字,如果不是 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,好像没什么毛病,但是实际写作业时无法通过关卡,请大神指导一下问题