是否可以使用数组值作为 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.
AFAIU 你的问题,通常的方法是有 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);
}
}
我正在尝试创建一个有效的 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.
AFAIU 你的问题,通常的方法是有 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);
}
}