我已经在这个项目上工作了大约 2 周,但我似乎无法弄清楚为什么它不会给我
我想要的输出是 -
原句=这是一个很大的早晨。
加密语句=This is a ag',rery dug>?\ijedug>?..w ssadorninjedug>?..w.
解密句子=这是一个非常大的早晨。
但是我似乎一直在-
原句 = This is a very big morning.
加密句=这是一个很挖>?/ig的早晨。
解密句子=这是一个非常大的早晨。
- 我已经尝试了很多方法,比如改变周围的字母,完全改变代码,但总是显示“这是一个非常无聊的>?ig morning”。
这是我的代码-
import java.io.*;
import java.util.*;
import java.io.*;
import java.util.*;
public class ED {
public static void main(String args[]) {
Scanner kbReader = new Scanner(System.in);
System.out.print("Enter a sentence that is to be encrypted:");
String sntnc = kbReader.nextLine();
System.out.println("Original Sentence = " + sntnc);
Crypto myCryptObj = new Crypto();
String encryptdSntnc = myCryptObj.encrypt(sntnc);
System.out.println("Encrypted sentence = " + encryptdSntnc);
String decryptdSntnc = myCryptObj.decrypt(encryptdSntnc);
System.out.println("Decrypted sentence = " + decryptdSntnc);
}
}
class Crypto {
public String x1;
public String acceptor(String sntnc) {
String x1 = sntnc;
return x1;
}
public String encrypt(String sntnc) {
x1 = sntnc.replace("v", "ag',r");
x1 = sntnc.replace("V", "ag',r");
x1 = sntnc.replace("M", "ssad");
x1 = sntnc.replace("m", "ssad");
x1 = sntnc.replace("g", "jeb..w");
x1 = sntnc.replace("G", "jeb..w");
x1 = sntnc.replace("B", "dug>?/");
x1 = sntnc.replace("b", "dug>?/");
return x1;
}
public String decrypt(String sntnc) {
x1 = sntnc.replace("ag',r", "v");
x1 = sntnc.replace("ag',r", "V");
x1 = sntnc.replace("ssad", "M");
x1 = sntnc.replace("ssad", "m");
x1 = sntnc.replace("jeb..w", "g");
x1 = sntnc.replace("jeb..w", "G");
x1 = sntnc.replace("dug>?/", "B");
x1 = sntnc.replace("dug>?/", "b");
return x1;
}
}
最佳答案
Java 的 String
是 immutable .您无法更改它们。
所以你必须在加密/解密后返回一个新的字符串。
幸运的是,所有生成新字符串的 String
方法实际上都创建了一个新字符串。 替换
包含在内。
所以使用这个:
public String encrypt(String sntnc) {
x1 = sntnc.replace("v", "ag',r");
x1 = x1.replace("V", "ag',r");
x1 = x1.replace("M", "ssad");
x1 = x1.replace("m", "ssad");
x1 = x1.replace("g", "jeb..w");
x1 = x1.replace("G", "jeb..w");
x1 = x1.replace("B", "dug>?/");
x1 = x1.replace("b", "dug>?/");
return x1;
}
public String decrypt(String sntnc) {
x1 = sntnc.replace("ag',r", "v");
x1 = x1.replace("ag',r", "V");
x1 = x1.replace("ssad", "M");
x1 = x1.replace("ssad", "m");
x1 = x1.replace("jeb..w", "g");
x1 = x1.replace("jeb..w", "G");
x1 = x1.replace("dug>?/", "B");
x1 = x1.replace("dug>?/", "b");
return x1;
}
或更短(确保使用您的 IDE 进行格式化):
public String encrypt(String sntnc) {
return sntnc.replace("v", "ag',r").replace("V", "ag',r").replace("M", "ssad").replace("m", "ssad").replace("jeb..w", "g").replace("jeb..w", "G").replace("dug>?/", "B").replace("dug>?/", "b");
public String decrypt(String sntnc) {
return sntnc.replace("ag',r", "v").replace("ag',r", "V").replace("ssad", "M").replace("ssad", "m").replace("jeb..w", "g").replace("jeb..w", "G").replace("dug>?/", "B").replace("dug>?/", "b");
}
替换顺序在这里很重要,所以要小心
关于java - 为什么它不能给我想要的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28791519/