当前位置: 首页 > 知识库问答 >
问题:

正确编码大写字母

楚志强
2023-03-14
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);
        }

    }

}

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

共有1个答案

鲁浩言
2023-03-14

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

接下来,消除if语句之前的cryptText.append(当前Char);。然后,用这个

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);
}

这实际上是有效的,除了我得到了一些不同于你想要的角色。你好世界!=

 类似资料:
  • 因此,我最近开始使用ffmpeg下载实时流媒体视频,但我面临的问题是,下载的视频会阻塞很多,特别是对于长视频(如2小时)而言。 我当前用于下载流文件的命令:- ffmpeg-i"https://link. m3u8"-c复制output.mkv 此命令在35分钟长的视频中运行良好[没有任何卡滞问题],但在2小时长的视频中失败 当我试图使用x264 lib命令编码2小时长的视频时,它还显示了“无效长

  • 问题内容: 以编程方式确定输入流/文件的正确字符集编码的最佳方法是什么? 我尝试使用以下方法: 但是在我知道要用ISO8859_1编码的文件上,上面的代码会产生ASCII,这是不正确的,并且不允许我将文件的内容正确地呈现回控制台。 问题答案: 无法确定任意字节流的编码。这就是编码的本质。编码是指字节值与其表示形式之间的映射。因此,每种编码“都可以”是正确的。 的getEncoding()方法将返回

  • 我有一个缓冲区与字符编码在Windows 1252。然而,当我用适当的编码创建一个新的字符串时,而不是预期的结果,我经常会得到询问标记,例如。 因此,系统应在其上方显示带“^”的“u”字符。而是显示“?”。 任何想法?

  • 我对编码很陌生。尝试用Java编写一个evaluatePostfix函数。我不断得到一个错误: 不兼容的类型:int不能转换为字符堆栈。push(eval(token,a,b)); 下面是我的代码块: 函数接受后缀表达式并计算结果。 这是我的eval函数:

  • 我正在尝试使用JSoup获取此URL http://betatruebaonline.com/img/parte/330/ciguen%c3%91al.jpg 相反,正确的 http://betatruebaonline.com/img/parte/330/ciguen%cc%83al.jpg 我该怎么解决这个?多谢了。

  • 因此,目前我的凯撒密码程序运行良好,每当我使用小写字母。但是,当我用大写输入一个单词或短语时,我想让它工作。这是我现在有的代码。希望你们能帮我完成这件事。 def encrypt(消息,距离):“”将获取消息并将其旋转到距离,以创建加密消息“” def decrypt(消息,距离):“”“将解密上面的消息”“” def binaryConversion(消息):“”“将把单词转换成二进制代码”“