这是一小部分家庭作业,我必须扫描整个文本文件并对整个内容进行加密/解密,但我认为在开始尝试使用多个方法来完成此任务之前,我应该能够了解基础知识话。
我试图弄清楚为什么我的代码只更改要加密的单词的最后一个字母,而不是整个单词的每个字母。
代码:
import java.util.*;
public class Encryptor
{
public static void main (String[] args)
{
Scanner in = new Scanner(System.in);
String word = "";
char ch = ' ';
System.out.println("What word do you want to encrypt");
word = in.nextLine();
//Encrypt word
for(int i = 0; i<word.length();i++)
{
ch = word.charAt(i);
ch++;
}
System.out.println(ch);
}
}
答案 0 :(得分:2)
您正在将word.charAt(i);
分配给ch
,然后递增ch
。但是,这不会更改word
的值。为此,您可以执行以下操作:
Scanner in = new Scanner(System.in);
String word = "";
StringBuilder encrypedWordSB = new StringBuilder();
System.out.println("What word do you want to encrypt");
word = in.nextLine();
// Encrypt word
for (int i = 0; i < word.length(); i++) {
char ch = word.charAt(i);
ch++;
encrypedWordSB.append(ch);
}
System.out.println(encrypedWordSB);
在上面的示例中,我们在ch
循环内对字符for
进行了加密,然后将加密后的字符附加到字符串中。在for
循环之后,我们得到了包含所有加密字符的字符串encryptedWord
。
答案 1 :(得分:0)
因此,代码中发生的事情是,您在for循环内,选择该索引处的图表并将其增加。但这就是循环中要做的所有事情,您不会在任何地方保存或显示它。因此,当循环的下一次迭代出现时,它将覆盖此值。然后在循环之后显示结果,由于最后一个字母是最后一个字母,因此迭代处理即显示的结果。
您可以通过以下方法解决此问题:在循环之前创建一个空字符串,然后在迭代中将每个字符添加到该字符串中。比循环结束后显示此字符串。