Home > Net >  Is it possible to use an array value as a switch case value?
Is it possible to use an array value as a switch case value?

Time:02-14

I am trying to create a working Java code. I created an encryption function that takes any symbol in a string and replaces it with a value from an array.

The problem is very simple. Decryption function must take any value written in an array and use it to decrypt. The code describes it better than I do.

   case "1" -> output  = n_encryptions[0];
// Then in decrypt():
   case n_encryptions[0] -> output  = "1";
// Sadly, this creates an error

My goal is to make an easily changeable encryption and decryption system, since I am planning to change these values in the future.

I need a way to use an array value (n_encryptions[0] in the example) as a case parameter.

Edit: I guess an if statement is the best option. Thanks!

CodePudding user response:

Is it possible to use an array value as a switch case value?

No, it is not.

Switch labels (to the right of the word case) must be compile-time constant expressions.

I need a way to use an array value (n_encryptions[0] in the example) as a case parameter.

Why do you 'need' this? It surely can be expressed another way,for example by using if.

CodePudding user response:

AFAIU you problem, a usual approach to this is to have 2 arrays

char[] from = {'a','b','c'};
char[] to = {'1','e','@'};

Read your input char by char, look up the position of the char in from and replace it with the char from the same position in to.

Reverse, the same (to -> from).

CodePudding user response:

I'm just suggesting a way of solving the problem. You can use a Map<Character, Character> for encryption and another for decryption. You can adapt the following program to your needs.

import java.util.HashMap;
import java.util.Map;

public class Test {
    public static void main (String[] args) {
        Map<Character, Character> encryptionMap = new HashMap<>();
        encryptionMap.put('a', '-');
        encryptionMap.put('b', ' ');
        encryptionMap.put('-', '1');
        encryptionMap.put(' ', '3');
        
        String plainText = "a b-a";
        String encryptedText = "";
        for (int i = 0; i < plainText.length(); i  ) {
            char ch = plainText.charAt(i);
            encryptedText  = encryptionMap.get(ch);
        }
        System.out.println("Plain Text: "   plainText);
        System.out.println("Encrypted Text: "   encryptedText);

        Map<Character, Character> decryptionMap = new HashMap<>();
        decryptionMap.put('-', 'a');
        decryptionMap.put(' ', 'b');
        decryptionMap.put('1', '-');
        decryptionMap.put('3', ' ');

        String decryptedText = "";
        for (int i = 0; i < encryptedText.length(); i  ) {
            char ch = encryptedText.charAt(i);
            decryptedText  = decryptionMap.get(ch);
        }
        System.out.println("Decrypted Text: "   decryptedText);
    }
}
  • Related