2014-01-28 86 views
0

我明天有一个项目,我仍然无法弄清楚。在阅读我的在线教科书以获取有关凯撒密码和加密的信息之后,我仍然不知道该怎么做。我是编程新手,所以大部分代码都不在我的联盟atm中,但是这个项目在学期只有三个星期的时候似乎已经进步了。凯撒密码计划

以下是说明: 您的任务是实施凯撒密码。您的密码必须带有两个命令行参数,即未加密的消息 和移位量k。您的代码将通过逐个移动每个字母,将未加密的消息转换为加密的消息 。然后它应该在屏幕上打印新的加密的 消息。大写字母在转换期间应保持大写,小写字母应保持较低的值。另外,确保空格完全不变。如果你可以考虑其他标点符号而不是 被改变,那么它被认为是“超越”。

我该如何着手启动这个项目,并且可以将它解释给有3周编码经验的人。

回答

1

这是作业,所以你可能不会得到很多完整的答案。但是这里有一些一般的指导:

1 - 空间被提及。所以你需要把你的输入作为一个单一的字符串,然后将其分解(拆分)成一个单词数组。这将是您滚动的主数组,当此循环完成时,您的程序完成。

2 - 现在你需要把你的元素(这是单个单词)和每个字母处理它们。您需要遍历每个单词的字符并应用移位(k)

3 - 一旦完成,您需要“重新组装”您的短语,但在主数组中的每个单词之后添加一个空格。将其作为“加密”消息输出到屏幕上。

1

创建一个包含要加密的字符的数组(顺序无关紧要)。在java中查找%运算符,并使用它为输入字符串中的每个项目计算加密值。

实施例的伪代码

  1. 发现在阵列正常指数(处理的情况下和特殊字符)
  2. 使用array.length%K
  3. 使用查找一个新的“加密的”值计算偏移索引偏移指数

您可能会发现Character类有用。

2

第1步 创建您的字母。

char[] alphabet = {'A', 'B', 'C', ... , 'X', 'Y', 'Z'}; 

步骤2

改变你的明文。假设args [0]是您的原始消息,并且从命令行传入的args [1]是您的换档。

char[] plaintext = args[0].toCharArray(); 
int shift = args[1]; 

for(int i = 0; i < plaintext.length; i++) { 
    for(int j = 0; j < alphabet.length; j++) { 
     if(alphabet[j] == plaintext[i]) { 
      plaintext[i] = alphabet[(j + shift) % alphabet.length]; 
     } 
    } 
} 

步骤3

把你转移字符数组转换回字符串和输出答案。

String ciphertext = new String(plaintext); 
System.out.println(ciphertext); 
1

您需要查看:

  • Scanner类在命令行中读取参数
  • java.lang.String中的类转字符的字符串成单独的字符数组元素
  • 递增和递减字符以将3加密或将3减去解密。

参见增加角色本教程:https://stackoverflow.com/questions/2899301/how-do-i-increment-a-variable-to-the-next-or-previous-letter-in-the-alphabet-in

这是一个开端类一个艰难的项目。

看看这个小程序,我展示了如何将字符从小写字母a增加到小写字母b。

public class alphabet { 
     public static void main(String[] args) { 
      char a = 'a'; 
      System.out.println("a currently equals: " + a); 
      System.out.println("++a now equals: " + (++a)); 


     } 

}