是否可以使用数组值作为 switch case 值?

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

我正在尝试创建一个有效的 Java 代码。我创建了一个加密函数,它接受字符串中的任何符号并将其替换为数组中的值。

问题很简单。解密函数必须取数组中写入的任何值并使用它来解密。代码比我描述得更好。

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

我的目标是制作一个易于更改的加密和解密系统,因为我计划在未来更改这些值。

我需要一种使用数组值(示例中的 n_encryptions[0])作为 case 参数的方法。

编辑:我想 if 语句是最好的选择。谢谢!

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

不,不是。

开关标签(单词case右边)必须是compile-time常量表达式。

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

你为什么'need'这个?它肯定可以用另一种方式表达,例如使用 if.

A​​FAIU 你的问题,通常的方法是有 2 个数组

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

逐个读取输入的字符,查找字符在 from 中的位置,并将其替换为 to.

中相同位置的字符

反向,相同(到 -> 从)。

我只是建议一种解决问题的方法。您可以使用 Map<Character, Character> 进行加密,使用另一个进行解密。您可以根据需要调整以下程序。

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);
    }
}