Java 使用不同的4位二进制数对4长度字符串进行编码

Java 使用不同的4位二进制数对4长度字符串进行编码,java,Java,我试图做一个函数,根据二进制数在其中的位置,将二进制数转换成字母 例如,如果我有二进制数:0101 我想把字符串“LUDR”有效地相乘,得到 :“吾珥” 我有一个数组中的4位二进制数,我想用它“相乘”的字符串总是“LUDR” 我将举更多的例子。。 二进制数:1011表示“LDR” 二进制数:0001表示“R” 编辑: 我已经编写的代码: String[][] binVals = new String[10][10]; //my function to fill up with 4 bit bin

我试图做一个函数,根据二进制数在其中的位置,将二进制数转换成字母

例如,如果我有二进制数:0101

我想把字符串“LUDR”有效地相乘,得到 :“吾珥”

我有一个数组中的4位二进制数,我想用它“相乘”的字符串总是“LUDR”

我将举更多的例子。。 二进制数:1011表示“LDR” 二进制数:0001表示“R”

编辑:

我已经编写的代码:

String[][] binVals = new String[10][10];
//my function to fill up with 4 bit binary values so i can get 100 in total
//just read from file so that's why it's a string array
String mazeWallRemove = "LURD";
//I need to write some function to turn the binary values in to some string
String[][] unCodedWalls = new String[10][10]//into this array
我的问题是,我可以使用什么函数“相乘”binVals和“LURD”字符串以获得字符串输出(如上图所示的形式)

我可以写15个if语句,将数组中的每个二进制值转换成整数,然后说:

for(int a = 0; a < 10; a++){
   for(int b = 0; b < 10; b++){
      if(binVals[a][b] == 1){
         uncodedWalls[a][b] = "R"
      } // lots more else if statements
   }
}
for(int a=0;a<10;a++){
对于(int b=0;b<10;b++){
if(binVals[a][b]==1){
非编码墙[a][b]=“R”
}//还有更多的if语句
}
}

这种方法效率极低,因此我正在寻找一种更有效的方法来实现它,而不是使用大量的if语句。

您可以使用String类中可用的charAt方法来构造所需的字符串。将要相乘的二进制数和字符串传递给此方法。这将检查二进制字符串中的字符是否为1,并从原始字符串中获取相应的值并将其追加

public String multiply(String value, String binary) {
    String finalString = "";
    for (int i = 0; i < binary.length(); i++) {
        if (binary.charAt(i) == '1') {
            finalString+=value.charAt(i);
        }
    }       
    return finalString;

}
公共字符串乘法(字符串值、字符串二进制){
字符串finalString=“”;
对于(int i=0;i
到目前为止,您已经完成了哪些代码。您能更详细地解释这个问题吗?我们理解您试图进行的练习,但您的问题是什么?我们不是一个代码编写服务,但我们将帮助您解决特定的编码问题。尽管您愿意提供帮助很好,但请注意,您只是为他们做了一些家庭作业。与其发布完整的代码解决方案,不如考虑让他们自己完成解决问题的过程。忽略关于家庭作业的争论,这个答案会很好,但是请注意,当使用一个<代码> StringBuilder < /代码>时,在一个循环中附加到一个字符串时,将获得更好的效率。特别是,如果你向构造器传递一个合理的初始容量,该容量将足以容纳组装字符串序列的最终长度。这不是任何作业,我正在编写一个可视化的、可交互的迷宫生成器和求解器,其中迷宫解算器是一个遗传算法。那是很久以前的事了,现在已经不重要了,只是想澄清一下。