有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Java中填充多维数组

因此,我试图从两个字符串填充一个2D数组,如下所示

然而,当我去编译我的代码时,我得到了一个

“java:不兼容的类型:无法将char[]转换为char”

错误。我做错了什么

public static void main(String[] args) {
    String alphabet = ("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
    String iAlphabet = ("ZYXWVUTSRQPONMLKJIHGFEDCBA");
    char alphabetArray [][] = {{alphabet.toCharArray()},{iAlphabet.toCharArray()}};
    System.out.print(alphabetArray[4][4]);
}

}

(对Java来说是个新手,我在这一次只是把头撞在墙上)


共 (5) 个答案

  1. # 1 楼答案

    你也可以利用字母“A”-“Z”是有序的这一事实

    例如:如果你想把一个数字翻译成字母表中的一个字母,你可以说:

    char a = 'A';
    a+=num;
    

    或者如果你想让它倒退

    char a = 'Z';
    a-=num;
    

    num是你应该给出的等价索引

    当然,这是假设您希望将数组设为只读,建议在执行这些操作之前进行某种验证。(验证数字为正且小于26) 如果这在你的情况下有效,那就太好了

  2. # 2 楼答案

    如果你想做一个凯撒密码:即翻译任何字符的任何偏移量,你可以做以下操作:

    private static char offsetChar(char chr, int offset){
        chr = Character.toUpperCase(chr);
        //value from 0-25 representing letter
        int val = chr - 'A';
        //make sure that the offset doesn't make it overflow past 26
        val = (val + offset) % 26;
        // convert back to letter from number 0-25
        return (char)('A' + val);
    }
    

    还要注意的是,这将自动大写字母,如果你不想发生这种情况,你可以测试它是否为大写,并使用 Character.isUpperCaseCharacter.toUpperCaseCharacter.toLowerCase

  3. # 3 楼答案

    您正在放置一个char数组,其中只需要放置char。所以去掉大括号,简单地放一个char数组

    你的代码应该是这样的

    public static void main(String[] args) {
            String alphabet = ("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
            String iAlphabet = ("ZYXWVUTSRQPONMLKJIHGFEDCBA");
            char[] charArray = alphabet.toCharArray();
            char[] charArray2 = iAlphabet.toCharArray();
            char alphabetArray[][] = { charArray, charArray2 };
            System.out.println(alphabetArray[0][23]);
        }
    
  4. # 4 楼答案

    声明数组,如下所示。记住它不是一个26 x 26的数组。它是一个2 x 26阵列

      String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
      String iAlphabet = "ZYXWVUTSRQPONMLKJIHGFEDCBA";
      char alphabetArray [][] = {alphabet.toCharArray(),iAlphabet.toCharArray()};
    

    从第二页打印V

    System.out.print(alphabetArray[1][4]);
    

    从第一页开始打印E

    System.out.print(alphabetArray[0][4]);
    
    
  5. # 5 楼答案

    我猜您希望能够在同一位置将字符从一个字符串转换为另一个字符串:

    public static void main(String[] args) {
       String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
       String iAlphabet = "ZYXWVUTSRQPONMLKJIHGFEDCBA";
       char alphabetArray [][] = {alphabet.toCharArray(),iAlphabet.toCharArray()};
    
       System.out.print("3rd character: " + alphabetArray[0][2] + " -> " + alphabetArray[1][2]);
    }
    

    这张照片是:

    3rd character: C -> X
    

    ussage作为翻译的一个例子是:

    public static void main(String[] args) {
       String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
       String iAlphabet = "ZYXWVUTSRQPONMLKJIHGFEDCBA";
       char alphabetArray [][] = {alphabet.toCharArray(),iAlphabet.toCharArray()};
    
       String test = "HELLO WORLD";
       StringBuffer translated = new StringBuffer();
       for (int i = 0; i < test.length(); i++) {
           int index = alphabet.indexOf(test.charAt(i));
           if (index > 0) {
               translated.append(alphabetArray[1][index]);
           } else {
               translated.append(test.charAt(i));
           }
       }
       System.out.println("original sentence: " + test);
       System.out.println("translated sentence: " + translated.toString());
    }
    

    其中打印:

    original sentence: HELLO WORLD
    translated sentence: SVOOL DLIOW