如何将所有这些索引放入一个 char 数组?

How do I put all those indexes to a char Array?

我找不到将 encryptedChar 放入 char 数组的方法,这样我就可以将消息放在一行中。如果有人能给我一个简单的解决方案或以任何方式帮助我,那就太好了!

import java.util.*;

public class MyClass {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);

        // can get the index without key. DONE
        // encrypt message. finish equation. 

        int encryptKey, encryptedIndex; 
        int plainLetterIndex = 0; 
        int loadingBar = 3; 
        char encryptedChar; 
        char[] alphaArray = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
        String redo, message;

        System.out.println("Welcome to the encrypter and decrypter program. The program will take the message");
        System.out.println("and either encrypt it or decrypt it. Depending on what you choose to do.");

        System.out.println("");

        do {
            System.out.println("Please enter your message!");
            message = sc.nextLine();
            message = message.toUpperCase();

            System.out.print("Would you like to re-enter your message? (Y/N)");
            redo = sc.nextLine();

        } while (redo.equals("Y") || redo.equals("y"));

        // declaring arrays
        char[] messageArray = message.toCharArray();
        char[] encryptedMessageArray = new char[messageArray.length];

        // asking for key
        System.out.println("Please input the 'key' you would like to use to encrypt your message.");

        while(true){
            try{
                encryptKey = Integer.parseInt(sc.nextLine());
                break;
            } catch (NumberFormatException ignore){
                System.out.println("You have entered an incorrect number, please try again!");
            }
        }


        System.out.println(" ");

        for (int i = 0; i < messageArray.length; i++) {

            //System.out.println(messageArray[i]);

            for (int k = 0; k < alphaArray.length; k++) {

                if (messageArray[i] == alphaArray[k]) {
                    plainLetterIndex = k;

                    encryptedIndex = (char)(plainLetterIndex + encryptKey) % 26;
                    encryptedChar = alphaArray[encryptedIndex];

                    //encryptedMessageArray = encryptedChar; 

                    System.out.print(encryptedChar);
                }
            }
        }
        sc.close();
    }
}

encryptedMessageArray 使用索引变量,每次将字符放入 encryptedMessageArray

时增加它
int index = 0;
for (int i = 0; i < messageArray.length; i++) {

        //System.out.println(messageArray[i]);

        for (int k = 0; k < alphaArray.length; k++) {

            if (messageArray[i] == alphaArray[k]) {
                plainLetterIndex = k;

                encryptedIndex = (char)(plainLetterIndex + encryptKey) % 26;
                encryptedChar = alphaArray[encryptedIndex];

                encryptedMessageArray[index] = encryptedChar; 
                index++;

            }
        }

    }

 System.out.println();
 System.out.println(encryptedMessageArray);

将加密的字符或原始字符添加到您的 encryptedMessageArray 以便您可以解密数组并获取原始消息

for (int i = 0; i < messageArray.length; i++) {
    boolean isCharEncrypted = false;
    for (int k = 0; k < alphaArray.length; k++) {
        if (messageArray[i] == alphaArray[k]) {
            plainLetterIndex = k;

            encryptedIndex = (char)(plainLetterIndex + encryptKey) % 26;
            encryptedChar = alphaArray[encryptedIndex];

            encryptedMessageArray[i] = encryptedChar; 
            isCharEncrypted = true;
        }
    }
    if (!isCharEncrypted) {
        encryptedMessageArray[i] = messageArray[i];
    }
}

这是避免内部 for 循环的替代解决方案

for (int i = 0; i < messageArray.length; i++) {
    char c = messageArray[i];
    if (c >= 'A' && c <= 'Z') {
       plainLetterIndex = c - 65; //A is ASCII 65

       encryptedIndex = (char) (plainLetterIndex + encryptKey) % 26;
       encryptedChar = alphaArray[encryptedIndex];

       encryptedMessageArray[i] = encryptedChar;
   } else {
       encryptedMessageArray[i] = messageArray[i];
   }
}