0

我需要制作一个程序来加密和解密用户输入的内容。我很难找到一种方法来组合所有字符来制作加密词。这是我的代码(我正在使用 Eclipse):

          import java.util.Scanner;

        public class Encryption 
        {
            public static String message = "";
            public static boolean hasMessage = false;
            public static boolean encrypted = false;
            static char a = 0; 
            static char b;
            static int w;
            static int x;
            static int y;
            static int z;
        static int i;


            public static void display()
            {
                System.out.println("Message: " + message + "\n");
            }

            public static void encrypt(String word)
            {
                if(!hasMessage)
                {
                    System.out.println("No message");
                    // Tell the user there is no message
                }
                else if(encrypted)
                {
                    System.out.println("Message is already encrypted");
                    // Tell the user the message is already encrypted
                }

                else
                {

                    // Reset the message to blank
            for (int i = 0; i < message.length(); i++) {
                i = j;
                ``char a = message.charAt(i);
            for (int j=0; j==message.length(); j++) 
            {
                int w = (int) a * 2;
                int x = (int) w + 2;  
                char y = (char) x; 
            }
            }
    }

=

                    //get char from each letter (increase char each time),  cast as int


                }
                System.out.println(message);
                encrypted = true;

                // Using the parameter word, modify message
                // to contain a new value following a predictable pattern
                // Hint:  alter each character's ASCII value by casting
                //        to an integer and using math operators

                // Display the new message
                // Set encrypted to true


            }

            public static void decrypt(String word)
            {
                if(!hasMessage)
                {
                    System.out.println("No message");
                    // Tell the user there is no message
                }
                else if(!encrypted)
                {
                    System.out.println("Message not encrypted");
                    // Tell the user the message is not encrypted

                }
                else
                {
                    int a = (int) w / 2;
                    int w = (int) x - 2;  
                    char x = (char) y; 
                    System.out.println(message);
                    // Like encrypt, but in reverse
                }

            }

            public static void main(String[] args) 
            {  
                Scanner sc = new Scanner(System.in);
                int menuChoice = 0;

                while(menuChoice != 4)
                {
                    System.out.println( "[1] Enter Word\n" + 
                            "[2] Encrypt\n" + 
                            "[3] Decrypt\n" + 
                            "[4] Quit\n");

                    menuChoice = sc.nextInt();

                    if(menuChoice == 1)
                    {
                        System.out.println("Input message");
                        message = sc.next();
                        // prompt user to input message
                        // assign next word to the class-level variable message
                        hasMessage = true;
                        encrypted = false;
                        // set hasMessage to true
                        // set encrypted to false

                    }
                    else if(menuChoice == 2)
                    {
                        encrypt(message);
                    }
                    else if(menuChoice == 3)
                    {
                        decrypt(message);
                    }
                }
            }
        }
4

1 回答 1

0

麻烦可能来自 for 循环。我真的不知道这个 for 循环应该做什么,所以我不能帮助你改变它。

for (message.charAt(a); a==message.length(); a++) 
        {
            int w = (int) a * 2;
            int x = (int) w + 2;  
            char y = (char) x; 
        }

这在伪代码中做了什么:

  1. 求字符串 a 中 0 处的字符,什么也不做。这只是浪费时间,所以我不知道这实际上是为了什么。
  2. 如果是,则检查消息是否为空,否则继续循环。
  3. 执行此循环中的代码。

我猜你想要做的是像这样逐个字符循环遍历字符串:

for (int i = 0; i < message.length(); i++) {
    char a = message.charAt(i);
}
于 2012-12-11T00:46:31.187 回答