Java 如何在2D数组中将字符串输入与字符配对?
当我运行下面的方法时,请记住,显示时,ADFGVX将打印到阵列的左侧和顶部,就像经典的ADFGVX密码一样Java 如何在2D数组中将字符串输入与字符配对?,java,arrays,string,input,multidimensional-array,Java,Arrays,String,Input,Multidimensional Array,当我运行下面的方法时,请记住,显示时,ADFGVX将打印到阵列的左侧和顶部,就像经典的ADFGVX密码一样 static char [][] poly = new char[][]{ {'p','h','0','q','g','6'}, {'4','m','e','a','1','y'}, {'l','2','n','o','f','d'}, {'x','k','r','3','c','v'}, {'s','5','
static char [][] poly = new char[][]{
{'p','h','0','q','g','6'},
{'4','m','e','a','1','y'},
{'l','2','n','o','f','d'},
{'x','k','r','3','c','v'},
{'s','5','z','w','7','b'},
{'j','9','u','t','i','8'}};
我已经写了一个方法,使用二维阵列显示一个多边形正方形,可以在上面看到,我想做的是将用户输入的内容与正方形配对,因此如果用户键入对象,我希望它返回FG VX XA DF GV XG
Scanner console = new Scanner (System.in);
String phrase;
displayGrid();
System.out.println("");
System.out.print("Please enter a phrase you want to use\n");
phrase = console.nextLine();
console.close();
这里有人知道我会怎么做吗?我本来打算做一个switch语句之类的东西,但我认为这行不通,即使这样做了,也会很长,效率很低。您可以在数组中迭代以获取要查找的字符的位置,然后将该位置解码为字母
public static String[] cypherADFGVX(String phrase){
String[] output=new String[phrase.length()];
for (int i = 0; i < phrase.length(); i++) {
//optional for breaking
//squareIteration:
for (int j = 0; j < 6; j++) {
for (int k = 0; k < 6; k++) {
if(poly[j][k]==phrase.charAt(i)){
output[i]=new String(new char[]{switchChar(j),switchChar(k)});
//To stop the iteration over poly and take care of the next char
//break squareIteration;
}
}
}
}
return output;
}
public static char switchChar(int integer){
switch (integer) {
case 0:
return 'A';
case 1:
return 'D';
//and so on
}
}
创建一个新的字符串数组,其中每个字符串都是两个大写字母。
它看起来像[FG,VX,…]。在我看来,这更便于进一步处理
if(poly[j][k]==phrase.charAt(i))
将方框中位置jk处的字符与输入字符串的第i个字符进行比较
output[i]=new String(new char[]{switchChar(j),switchChar(k)});
我使用以字符数组为参数的字符串构造函数
new char[]{'a','b'}
创建数组并用括号中列出的元素填充它
确实可以使用开关设置变量的值,然后返回该变量 谢谢你的回复!我只是想澄清一些事情。String[]输出=新字符串[phrase.length];这是创建一个新字符串并将其设置为短语的大小?poly[j][k]==phrase.charAti这意味着其当前所在索引处的字符是否等于字符串中的字符?输出[i]=newstringnewchar[]{switchCharj,switchChark};这是什么意思?我以前从未见过这种情况,现在我将研究switchchar,我们是否应该通过开关传递输出?为什么是整数?
output[i]=new String(new char[]{switchChar(j),switchChar(k)});
new char[]{'a','b'}