gpt4 book ai didi

java - Java 中的 ROT-N(或 ROT-X)函数

转载 作者:行者123 更新时间:2023-12-02 02:34:52 34 4
gpt4 key购买 nike

目前,我正在编写一个程序,该程序使用 Java 对给定字符串执行 ROT-1 直到并包括 ROT-25。在我的研究之初,我发现this代码:

public class Rot13 { 

public static void main(String[] args) {
String s = args[0];
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c >= 'a' && c <= 'm') c += 13;
else if (c >= 'A' && c <= 'M') c += 13;
else if (c >= 'n' && c <= 'z') c -= 13;
else if (c >= 'N' && c <= 'Z') c -= 13;
StdOut.print(c);
}
StdOut.println();
}
}

经过一些故障排除后,我得到了这个:

private static void rotALL(String input) {
//Loop 25 times, starting with ROT-1 and ending at ROT-25 (every possibliity besides the original input)
for (int i = 1; i < 26; i++) {
int rot = 26 - i;
System.out.print("ROT" + rot + ": ");
for (int charIndex = 0; charIndex < input.length(); charIndex++) {
char c = input.charAt(charIndex);

int inta = 97; //a in the ASCII table
int intaWithRot = inta + rot;
int intA = 65; //A in the ASCII table
int intAWithRot = intA + rot;

int intaWithRotPlusOne = intaWithRot + 1;
int intaWithRotPlusi = intaWithRot + i;
int intAWithRotPlusOne = intAWithRot + 1;
int intAWithRotPlusi = intAWithRot + i;

if (c >= inta && c <= intaWithRot) {
c += rot;
} else if (c >= intA && c <= intAWithRot) {
c += rot;
} else if (c >= intaWithRotPlusOne && c <= intaWithRotPlusi) {
c -= rot;
} else if (c >= intAWithRotPlusOne && c <= intAWithRotPlusi) {
c -= rot;
}
System.out.print(c);
}
System.out.println();
}

现在我遇到了问题:

  1. 当我使用 ROT-13 输入“grfg qngn”(即“测试数据”)时,ROT-13 的输出是“ROT13: test d{t{”,“{”和“a "在 ASCII 表中相距 26 位,但我不知道为什么在正确显示“e”等字母的情况下会出现此错误。

  2. 如何更改此算法,使其循环通过 ROT-1 到 ROT-25?我认为这应该可以解决问题,但我错过了一些东西。

提前致谢并致以亲切的问候!

最佳答案

有数百万种方法可以解决这个问题,作为学习者,您应该探索所有这些方法。我关于使用模“%”运算符的评论可以通过这个小方法来说明:

private static char rotateLower(char c, int rot) {
int baseBand = c - 'a';
int modified = (baseBand + rot) % 26;
return (char) (modified + 'a');
}

关于java - Java 中的 ROT-N(或 ROT-X)函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46529885/

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