尝试学习“一字通”加密技术

时间:2018-10-20 23:15:27

标签: java

这是一小部分家庭作业,我必须扫描整个文本文件并对整个内容进行加密/解密,但我认为在开始尝试使用多个方法来完成此任务之前,我应该能够了解基础知识话。

我试图弄清楚为什么我的代码只更改要加密的单词的最后一个字母,而不是整个单词的每个字母。

代码:

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);


}

}

2 个答案:

答案 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循环内,选择该索引处的图表并将其增加。但这就是循环中要做的所有事情,您不会在任何地方保存或显示它。因此,当循环的下一次迭代出现时,它将覆盖此值。然后在循环之后显示结果,由于最后一个字母是最后一个字母,因此迭代处理即显示的结果。

您可以通过以下方法解决此问题:在循环之前创建一个空字符串,然后在迭代中将每个字符添加到该字符串中。比循环结束后显示此字符串。