gpt4 book ai didi

java - 凯撒密码程序,如何只使用字符a-z?

转载 作者:行者123 更新时间:2023-11-29 08:30:32 25 4
gpt4 key购买 nike

Caesar Cipher 单独应用于字符串中的每个字母。每个字母必须在字母表中向前移动 n 步。如果一个字母从字母表的末尾移出(‘z’),那么它会一直移回到字母表的开头(‘a’)。 `

import java.util.*;

class question7{

public static void main (String[] args ){

String str = "";
//allowing program to take user input using the keyboard
Scanner kb = new Scanner(System.in);
Scanner s = new Scanner(System.in);

int n = 0;
System.out.println("increasing the letters in string by n");

while (true){
System.out.println("Please enter your string");
str = kb.nextLine();

System.out.println("Please enter your n value");
n = s.nextInt();

String incrementedword=new String();
for (int i=0;i<str.length();i++){
incrementedword+=(char)(str.charAt(i)+n);
}

System.out.println ("your word is "+incrementedword);

}
}
}

例如,下面的输入(“hello world”,1)应该返回“ifmmp xpsme”

然而,当我输入(“hello world”,1)时,输出是“ifmmp!xpsme”

我做错了什么?

最佳答案

这里有两个问题:

  • 在将一些字符递增到接近字母表末尾后,您将获得非字母数字字符(例如,z+1 将变为花括号 { - 请参阅 ASCII table)。尝试使用余数运算符 (%)。例如,117 % 100 将是 17,13 % 3 将是 1。这样 (x + 1) % 10 永远不会超过 10,将从 0 开始计数并随着 x 的增加再次向上计数。
  • 如果您只想加密 a..z 和 A..Z 范围内的字符,请排除其他字符。简单比较有效:if (x>='a' && x <='z') 。

我不会在这里提供完整的工作代码,因为看起来像是作业。

关于java - 凯撒密码程序,如何只使用字符a-z?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48646646/

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