我想用另一个字母替换一个字母。"n"及以下的每个字母都有效,但上半部分不会改变字母。有人可以解决这个问题吗?



import java.util.Scanner;//导入

公共类project2 {

public static void main(String[] args) {


Scanner in = new Scanner(System.in); //setting scanner
System.out.println("Please enter the text you wish to encode."); //question
String place = in.nextLine();

place = place.replace('a', 'z'); //Making what letters replace with what
place = place.replace('b', 'y');
place = place.replace('c', 'x');
place = place.replace('d', 'w');
place = place.replace('e', 'v');
place = place.replace('f', 'u');
place = place.replace('g', 't');
place = place.replace('h', 's');
place = place.replace('i', 'r');
place = place.replace('j', 'q');
place = place.replace('k', 'p');
place = place.replace('l', 'o');
place = place.replace('m', 'n');
place = place.replace('n', 'm');
place = place.replace('o', 'l');
place = place.replace('p', 'k');
place = place.replace('q', 'j');
place = place.replace('r', 'i');
place = place.replace('s', 'h');
place = place.replace('t', 'g');
place = place.replace('u', 'f');
place = place.replace('v', 'e');
place = place.replace('w', 'd');
place = place.replace('x', 'c');
place = place.replace('w', 'b');
place = place.replace('z', 'a');

System.out.println(place); //typing the encoded message
}

}

这是目前为止我所拥有的,但只有下半部分可以工作,其余部分不能替换。

看了这一点,我决定通过您的代码发送以下内容。

"abcdefghijklmnopqrstuvwxyz" 
作为回应,我得到了
"aycdefghijklmmlkjihgfedcya".

这几乎是我所期望的。我期望的是

"abcdefghijklmmlkjihgfedcba". 

这就引出了第一个问题。

place = place.replace('w', 'b');

"w"应该是"y"。

现在第二个问题是你更具体地问的问题。为什么镜像指向m?我们按顺序遍历这个字符串并在每次修改后更新它。当我们到达m时,a-l变成了z-n。因此,当我们继续执行代码时,我们将把所有曾经是a-l的字符更改为a-l。

试试这个答案https://stackoverflow.com/a/45668235/12572585我已经测试过了,效果很好。

最新更新