[英]Rotating array elements while looping and keeping the previous output
我创建了一个二维数组矩阵。 我基本上已经创建了Vigenere 密码矩阵,但我在字母转换方面遇到了很多问题。
该程序的重点是加密或解密以.txt文件形式给出的消息。 然后我将其转换为常规的“一维字符数组”。 本质上是阅读文本并将每个字符放入一个新数组中。
我还从用户那里获得了密钥的输入。 然后获取并重复该键以匹配字符数组的长度。 所以现在我有一个键数组。
Vigenere 密码如何工作? 该键和文本的第一个字母是否匹配(因此 X 轴上是“消息”,Y 轴上是“键”)?
例如,如果我做key: blue
和message: sett
加密的消息将是: tfmx
,
我的代码:
public class Assignment3 {
public static void main(String[] args){
VigenereCipher cipher = new VigenereCipher();
cipher.main_menu();
}
void main_menu()
/** This is the 'main menu' of the program. It allows the user to input 1 of 3 options
* (to encrypt, decrypt or to terminate the program).
*
* Inputs: (0, 1, 2)
* Output: calls instructed methods based on user input.
*/
{
System.out.println(Arrays.deepToString(cipherMatrix()));
}
public static char[][] cipherMatrix() {
char[][] arrayChart = new char[26][26];
char [] alphabet = "abcdefghijklmnopqrstuvwxyz".toCharArray();
for (int i = 0; i < 26; i++) {
for (int j = 0; j < 26; j++) {
arrayChart[i][j] = alphabet[j];
}
alphabet = letterShift(i);
}
return arrayChart;
}
public static char[] letterShift(int nig) {
char [] alphabet = "abcdefghijklmnopqrstuvwxyz".toCharArray();
for (int i = 0 ; i < 26; i++) {
char first;
int j;
first = alphabet[0];
for (j = 0; j < alphabet.length - 1; j++) {
alphabet[j] = alphabet[j + 1];
}
alphabet[j] = first;
}
return alphabet;
}
我的letterShift
方法正常工作,但我无法保存每个单独的数组并输出每个更改的数组。
不用担心大写和符号 rn。
有人能帮忙吗?
您的主要方法只是打印密码矩阵。 您可以分享您为使用此矩阵而编写的任何(伪)代码吗?
您的问题与其说是矩阵和数组操作有关,不如说是关于如何构建您的思维/工作 - 如何从书面问题描述到可以在 Java 中单独研究和实施的一系列较小任务。 如果您可以确定需要使用哪些组件以及需要使用它们做什么,则可以通过 web 搜索轻松找到完成此任务所需的一切。
我的建议是暂时忘记主要方法、用户输入等。 而是从功能方面考虑。 你的顶级方法是做什么的? 输入需要哪些类型? 它会返回什么样的价值? 您已经完成了一项子任务:创建密码矩阵。 还需要执行哪些其他子任务,它们的输入和输出是什么?
如果你已经把这一切都想好并写出来了,你可以通过使用各种硬编码值调用你的顶级 function 来测试它。 最后,当您从测试值中获得期望的结果时,您可以考虑如何从磁盘读取消息文件并从终端读取用户输入 - 您会在 Internet 上找到大量示例,说明如何在 Java 中完成这些步骤。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.