繁体   English   中英

在循环的同时旋转数组元素并保持之前的 output

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM