我有一个带两个输入的方法。问题是当我输入类似快车的东西时。当它在计算后返回消息时我会得到idvwfdu它摆脱了两个单词之间的空格,但我想要idvw fdu。我该如何解决这个问题?
for (int i=0; i<text.length();i++){
char c=text.charAt(i);
char character=(char)(c+shift);
if (character >='a' && character <='z'){
newMsg+=character;
}else if(character > 'z') {
newMsg+=(char)((char)(c-(26-shift)));
}
}
return newMsg;
答案 0 :(得分:2)
您的代码存在两个问题。首先是你在检查之前转移每个角色
char character=(char)(c+shift); // you already lost space character here
其次你正在失去这里的空间
if (character >='a' && character <='z'){
newMsg+=character;
}else if(character > 'z') { // space will be shifted once again
newMsg+=(char)((char)(c-(26-shift)));
}
因此,为了解决这个问题,您必须牢记两个评估,结果应该如下所示
String text = "fast car";
String newMsg = "";
int shift = 1;
for (int i = 0; i < text.length(); i++) {
char c = text.charAt(i);
char character = (char)(c != ' ' ? c + shift : c); // first space check
if (character >= 'a' && character <= 'z') {
newMsg += character;
} else if (character == ' ') newMsg += ' '; // second space check
else if (character > 'z') {
newMsg += (char)((char)(c - (26 - shift)));
}
System.out.println(newMsg); // prints gbtu dbs
答案 1 :(得分:1)
如果你担心的是没有保留的空间,
替换
Enter-PSSession
与
Invoke-Command
答案 2 :(得分:0)
在for循环中添加空格字符的条件并继续。
for(int i = 0; i&lt; text.length(); i ++){
char c=text.charAt(i);
if( c== ' '){
newMsg+=c;
continue;
}
......
}