gpt4 book ai didi

java - 正确编码大写字母

转载 作者:行者123 更新时间:2023-12-01 13:17:43 25 4
gpt4 key购买 nike

package edu.secretcode;

import java.util.Scanner;

/**
* Creates the secret code class.
*
* @author
*
*/
public class SecretCode {
/**
* Perform the ROT13 operation
*
* @param plainText
* the text to encode
* @return the rot13'd encoding of plainText
*/

public static String rotate13(String plainText) {
StringBuffer cryptText = new StringBuffer("");
for (int i = 0; i < plainText.length() - 1; i++) {
char currentChar = plainText.charAt(i);
currentChar = (char) ((char) (currentChar - 'A' + 13) % 26 + 'A');
cryptText.append(currentChar);
if (currentChar <= 'A' || currentChar >= 'Z') {
cryptText.append(plainText.charAt(i));
}

else {
currentChar = (char) ((char) (currentChar - 'A' + 13) % 26 + 'A');
cryptText.append(currentChar);
}

}
return cryptText.toString();

}

/**
* Main method of the SecretCode class
*
* @param args
*/
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
while (1 > 0) {
System.out.println("Enter plain text to encode, or QUIT to end");
Scanner keyboard = new Scanner(System.in);
String plainText = keyboard.nextLine();
if (plainText.equals("QUIT")) {
break;
}
String cryptText = SecretCode.rotate13(plainText);
String encodedText = SecretCode.rotate13(plainText);

System.out.println("Encoded Text: " + encodedText);
}

}

}

大家好,我希望这个程序对大写字母进行编码,并保留其他字符并将它们传递到输出中。例如“ Hello World !”运行程序“URYY\d_YQ!”后应变为我得到的是 YLUHREYLYLBOWJJWBOERYLQDXK 而不是“URYY\d_YQ!”这就是我应该得到的。如果有人能让我知道我做错了什么,我将不胜感激。提前致谢。

最佳答案

如果使用字符串与正则表达式匹配会更容易。首先,在循环条件中消除 -1。否则你只能到达倒数第二个字符。

接下来,删除 if 语句之前的 cryptText.append(currentChar);。然后,使用这个

char currentChar = plainText.charAt(i);
String cS = currentChar+"";
currentChar = (char) ((char) (currentChar - (int)'A' + 13) % 26 + (int)'A');

if (!cS.matches("[A-Z]")) {

cryptText.append(plainText.charAt(i));
}
else {
cryptText.append(currentChar);
}

这实际上是有效的,只是我得到了一些与你想要的不同的字符。 Hello World ! => URYYB JBEYQ!

关于java - 正确编码大写字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22336046/

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