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

Java中的凯撒密码--打印空白行

钱星华
2023-03-14

我目前正在尝试用Java编写一个凯撒密码,密钥为18。

import java.util.Objects;
import java.util.Scanner;
class MainApplication {
private static final Scanner input = new Scanner(System.in);

private static String CryptMessage(int key, String message) {
    StringBuilder temp = new StringBuilder();
    for (int i = 0; i == message.length(); i++) {
        if (Character.isLetter(message.charAt(i))) {
            int num = (int) message.charAt(i);
            num = num + key;
            if (Character.isUpperCase(message.charAt(i))) {
                if (num > (int) ('Z')) {
                    num = num - 26;
                } else if (num < (int) ('A')) {
                    num = num + 26;
                }
            }
            if (Character.isLowerCase(message.charAt(i))) {
                if (num > (int) ('z')) {
                    num = num - 26;
                } else if (num < (int) ('a')) {
                    num = num + 26;
                }
            }
            temp.append((char) num);
        } else {
            temp.append(message.charAt(i));
        }
    }
    message = temp.toString();
    return message;
}
private static void encrypt(){
    int key = 18;
    System.out.println("Please enter a message to encrypt: ");
    String message = input.nextLine();
    System.out.println(CryptMessage(key, message));
}
private static void decrypt(){
    int key = -18;
    System.out.println("Please enter a message to decrypt: ");
    String message = input.nextLine();
    System.out.println(CryptMessage(key, message));
}
public static void main(String args[]){
    System.out.println("Message Encryption System 3.0");
    System.out.println("Please select an option:");
    System.out.println("[1] - Encrypt Message");
    System.out.println("[2] - Decrypt Message");
    String opt = input.nextLine();
    if(Objects.equals(opt, "1")){
        encrypt();
    }
    else if(Objects.equals(opt, "2")){
        decrypt();
    }
    else{
        System.out.println("Invalid input.");
    }
}
}

然而,程序运行时,它会在加密(或解密)消息所在的地方打印一个空行。

共有1个答案

冯皓
2023-03-14

循环条件i==message.length()应该是i

for循环中的条件决定何时继续下一次迭代。在第一次迭代时,您的条件为false,循环立即终止(在第一次迭代之后)。

 类似资料:
  • 问题内容: 我通过java进行了凯撒密码,它可以运行,但是在用户输入密钥后不对任何内容进行加密! 这是我的代码 跑: 问题答案: 使用效率不是很高…您可以对值进行整数运算以获得其索引。 我在代码中添加了注释以解释更多信息,但这就是我想出的。 输出应该是这样的

  • 我需要编写一个python、hacker和wow这些单词的加密文本,并且使用不包括使用RAW_INPUT的python中的凯撒密码,距离为3。这是我到目前为止,但我不断得到一个错误消息,我不知道如何修复它。

  • 所以,我试图想出一种方法来对凯撒密码进行加密/解密(在这里,你输入一个值,然后将字母沿着字母表移动很多次,例如,如果密钥是3,那么a将变成d,b将变成e,c将变成f,以此类推),但我需要使用递归,而不是迭代。到目前为止,我只对最后一个字符进行了加密,并输出“encrypted-w”,这对我来说是没有意义的。

  • 示例:返回。如果给定的整数值小于0或大于26,则应返回空字符串。 我的问题是,作为回报,它只给我真或假。如何解决这个问题:该方法应该返回一个字符串,其中每个字符都是根据指定的整数值移动的。

  • 这里是一个加密的消息,首先使用3个位置的凯撒密码,然后5个位置。 解密时应该说: 好的,这是我写的类(您将需要所有的导入),我想感谢任何提前帮助的人: