.replace方法不是java中的workkng

Cha*_*ive -2 java java.util.scanner

我想做某种加密,但是如果我输入a,它就不会改为I,它只会打印一个.为什么是这样?

import java.util.Scanner;
public class Encryption 
{
    public static void main(String[] args)
    {
        String normal = "", encoded, userResponse = "";

        Scanner sc = new Scanner(System.in);

        System.out.println("Are you encoding or decoding? E or D");
        userResponse = sc.next();

        if (userResponse.equalsIgnoreCase("e"))
        {
            System.out.println("Enter the text that you want to encode:");
            normal = sc.next();

            encoded = normal.replace('a', 'i');
            encoded = normal.replace('b', 's');
            encoded = normal.replace('g', 'e');
            encoded = normal.replace('k', 'f');
            encoded = normal.replace('p', 'h');
            encoded = normal.replace('c', 'z');
            encoded = normal.replace('m', 'r');
            encoded = normal.replace('n', 't');
            encoded = normal.replace('o', 'd');
            encoded = normal.replace('l', 'j');
            System.out.println(encoded);
        }
        else if (userResponse.equalsIgnoreCase("d"))
        {
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

das*_*ght 5

由于您normal在所有调用中继续使用replace,因此只有最后一个调用有效,因为它会覆盖所有其他更改.

删除normal变量,分配encoded = sc.next();和使用encoded每次调用replace,即

encoded = sc.next();
encoded = encoded.replace('a', 'i');
encoded = encoded.replace('b', 's');
encoded = encoded.replace('g', 'e');
... // And so on
Run Code Online (Sandbox Code Playgroud)