java - 它将反转纯文本,用“*”替换空格,然后根据加密密钥移动纯文本的字母
问题描述
public class pppp {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
String s1;
s1=input.nextLine();
char ch[]=new char[s1.length()];
int x;
x=input.nextInt();
int i=0;
int j=0;
int h=0;
for(i=s1.length()-1;i>=0;i--) {
ch[j]=s1.charAt(i);
j++;
}
System.out.println(ch);
for(i=0;i<s1.length();i++) {
if(ch[i]==' ') {
ch[i]='*';
}
else if((ch[i]+x)<122 && ch[i]!='*') {
ch[i]+=x;
}
else if((ch[i]+x-'z')==1) {
ch[i]='a';
}
else if(ch[i]+x-'z'>1) {
ch[i]='a';
ch[i]+=((ch[i]+x-'z')-1);
}
}
System.out.println(ch);
}
}
当我尝试打印“megadeth”并给出键 7 时,它将根据它移动字符代替 t,这个'{'来了。
megadeth
7
htedagem
o{lkhnlt
它现在适用于 t 但如果我写 u 而不是 ti 得到 N 这是错误的。这是编辑后的代码。
我能做些什么来解决它?
解决方案
IIUC,您想要:
- 反转你的字符串
- 将所有出现的空格字符 (
' '
) 替换为'*'
- 对结果字符串的字母执行凯撒键移
以下是使用流执行此操作的方法:
import java.util.Scanner;
import java.util.stream.Collectors;
public class pppp {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
String s1;
s1=input.nextLine();
int x;
x=input.nextInt();
System.out.println(
new StringBuilder(s1)
.reverse().toString()
.chars()
.map(c -> c == ' ' ? '*' : c)
.map(c -> {
if (Character.isLetter(c)) {
char first = Character.isUpperCase(c) ? 'A' : 'a';
return first + (((c - first) + x) % 26);
}
else return c;
})
.mapToObj(c -> Character.toString((char) c))
.collect(Collectors.joining())
);
}
}
以下是计算班次的相关片段:
char first = Character.isUpperCase(c) ? 'A' : 'a';
return first + (((c - first) + x) % 26);
假设您要将字母t移动7 个位置。你的结果应该是一个.
为此,我们首先计算字母表中字母t的索引(从零开始):
index = 't' - 'a' = 116 - 97 = 19
接下来,将 key 添加到index
模 26 以获取通过 key 移动的字母的索引。在这种情况下,密钥是 7。
shiftIndex = (index + 7) % 26 = (19 +7) % 26 = 26 % 26 = 0
最后,您可以像这样计算移位的字符:
result = 'a' + shiftIndex = 'a' + 0 = 'a'
这就是我的解决方案所做的,加上大写字母的附加逻辑。
推荐阅读
- ios - 从连接的 WIFI 网络设备获取位置数据
- javascript - 谷歌电子邮件:触发工作表脚本的按钮/链接
- android - 我的应用程序在我尝试使用适配器时崩溃
- python - 从 Linux 机器远程卸载、安装和打开 Windows 中的程序 (.msi) 的方法
- python - Python 3:创建多个字典的列表具有相同的键但来自多个列表的不同值
- python - 如何在python3中使用for循环从列表中打印子列表(字符串)?
- asp.net-mvc - 水晶报表在生产环境中不呈现
- tensorflow - 平面一维数据上的一维卷积(即无时间序列)
- keycloak - 将用户添加到组时出现重复键异常
- javascript - 按下以 URL 形式打开时,如何将 URL 单元格文本转换为小链接?