gpt4 book ai didi

java - 凯撒的密码

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:33:50 27 4
gpt4 key购买 nike

这是 Ceaser 密码的 Java 代码

import java.util.*;

public class Main {

public static void main(String[] args) {
Scanner stdin = new Scanner(System.in);
int length = stdin.nextInt();
String text = stdin.next();
int shift = stdin.nextInt();

for(int i = 0; i < length; i++) {
char c = text.charAt(i);
if(c >= 'a' && c <= 'z') {
System.out.print((char)(((int)c - (int)'a' + shift) % 26 + (int)'a'));
} else if(c >= 'A' && c <= 'Z') {
System.out.print((char)(((int)c - (int)'A' + shift) % 26 + (int)'A'));
} else {
System.out.print(c);
}
}
stdin.close();
}
}

我不明白这行代码发生了什么

System.out.print((char)(((int)c - (int)'a' + shift) % 26 + (int)'a'));

为什么 -( int ) ' a '

最佳答案

为了让 % 26 在移位将编码字符推到 'z' 之外时正确地旋转编码字符,您需要处理值 0-25。 'a' - 'z' 的 ASCII 值是 97-122,这使得旋转变得困难。通过从被移动的字符中减去 'a',您将字符映射到 0-25 之间的值,从而可以使用 % 26 进行旋转。

关于java - 凯撒的密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40121887/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com