首先,用户提供替换密钥。
第二,用户根据给定的密钥提供加密文件名。
替换应该是这样的:
abcdefghijklmnopqrstuvwxyz
变成了
的 kngcadsxbvfhjtiumylzqropwe
大写字母保留资本,例如,如果字符是' A' - >' K'
如果它不是字母,那么它保持不变(保留文件文本的空格)
这就是我提出的:
public static void encrypt(){
//System.out.println(inText);
for(int j=0;j<inText.length()-1; j++){
for(int i=0;i<26;i++){
if(letters[i]-inText.charAt(j) ==0){
outText = inText.replace(inText.charAt(j), userKey.charAt(i));
}
}
}
}
只有&#39; ---&gt;&#39; r&#39;而不是文本文件的其余部分。需要帮助!
sampleinput.txt:
CS 3欢迎你!
在本课程中,我们将介绍不同的材料。
每种材料对于下一篇要了解的材料都非常重要。
键:
qwertyuioplkjhgfdsazxcvbnm
答案 0 :(得分:1)
encode()
方法存在的问题是outText
始终被下一次替换覆盖。
outText = inText.replace(inText.charAt(j), userKey.charAt(i));
由于d
是输入文本中的最后一个字符,因此最后一个字节存储在outText
中。哪个是d
替换r
。
// plain abcdefghijklmnopqrstuvwxyz
// userKey qwertyuioplkjhgfdsazxcvbnm
// *
outText = inText.replace('d', 'r');
这里可能有一个附加评论。
if(ls.charAt(i)==inText.charAt(j)){
outText = inText.replace(inText.charAt(j), userKey.charAt(i));
解释输入文本中的最后一个字符&#34; ...下面 d 。&#34;
if
语句检查输入文本中索引j
处的字符(d
)是否等于索引i
处的字符(at索引3)在普通字母表中i
)获取索引r
处的字符替换d
中将r
替换为inText
,其中不包含任何先前的替换编辑问题是您不能保留以前的替代品。
第一个小写字符是e
CS 3 W e 得到你的支持!
在本课程中,我们将介绍不同的材料 每种材料对于下一种材料都非常重要。
应替换为字符t
CS 3 W t lcom t 你! 在本课程中,w t 将通过diff t r t nt mat t rials。
每个垫子 t 对于 t n t xt mat t < strong> rial to und t rstand。
作为此替换的基础,您使用inText
(纯文本),结果存储在outText
中。
下一个小写字符是l
CS 3我们 l 来找你!
在本课程中,我们将介绍不同的材料 每种材料对于下一种材料都非常重要。
应由字符k
代替。当您再次使用替换inText
的基础时,先前的替换e -> t
将丢失。 outText
中的结果是
CS 3我们 k 来找你!
在这个c k 的屁股中,我们wi kk 经历不同的材料 k s。
每个材料 k 对于下一个 k 材料非常重要。
等等。
解决这个问题的一个天真想法可能是在每次替换后将文本分配给inText
。
outText = inText.replace(inText.charAt(j), userKey.charAt(i));
inText = outText;
但是你也可以替换已经被替换的字符,结果将是
CS 3 Wckcccca ccc!
Ic ccca ckaaa,cc cckk cc ccacccc accccaccc caccacaka Eacc caccacak ca ccac ccccacacc cca ccc cccc caccacak cc ccacaacaca。
你最初的想法已经朝着正确的方向发展了。为了避免以下多个子站将更加健壮。
以此代码段为例
String alphabet = "abcdefghijklmnopqrstuvwxyz";
String userKey = "qwertyuioplkjhgfdsazxcvbnm";
String plainText = "CS 3 Welcomes you!\n"
+ "In this class, we will go through different materials.\n"
+ "Each material is very important for the next material to understand.";
StringBuilder substitutedText = new StringBuilder(plainText.length());
for (int i = 0; i < plainText.length(); i++) {
char plainCharacter = plainText.charAt(i);
int indexAlphabet = alphabet.indexOf(plainCharacter);
if (indexAlphabet >= 0) {
char substitutedCharacter = userKey.charAt(indexAlphabet);
substitutedText.append(substitutedCharacter);
} else {
substitutedText.append(plainCharacter);
}
}
System.out.println(substitutedText.toString());
<强>输出强>
CS 3 Wtkegjta ngx!
Ih zioa ekqaa,vt vokk ug zisgxui royytsthz jqztsoqka。
Eqei jqztsoqk oa ctsn ojfgszqhz ygs zit htbz jqztsoqk zg xhrtsazqhr。