为了账号安全,请及时绑定邮箱和手机立即绑定

如何将所有这些索引放入字符数组?

如何将所有这些索引放入字符数组?

临摹微笑 2021-12-10 17:03:02
我找不到一种方法可以将 encryptedChar 放入字符数组,以便我可以将消息放在一行上。如果有人能给我一个简单的问题解决方案或以任何方式帮助我,那就太好了!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++) {                }            }        }        sc.close();    }}
查看完整描述

2 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

使用索引变量 for 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);


查看完整回答
反对 回复 2021-12-10
?
慕运维8079593

TA贡献1876条经验 获得超5个赞

将加密的字符或原始字符添加到您的,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];

   }

}


查看完整回答
反对 回复 2021-12-10
  • 2 回答
  • 0 关注
  • 155 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信