簡體   English   中英

在 Java 中填充多維數組

[英]Populating Multidimensional Arrays in Java

所以我試圖用兩個字符串填充一個二維數組,如下所示。

但是,當我去編譯我的代碼時,我得到一個

“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 新手,我只是用頭撞牆)

我想您希望能夠將字符從一個字符串轉換為同一位置的另一個字符串:

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

使用翻譯的一個例子是:

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

如下所示聲明數組。 記住它不是一個 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]);

您正在放置一個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]);
    }

您還可以利用字母“A”-“Z”按順序排列的事實

例如:如果你想把一個數字翻譯成字母表中的一個字母,你可以說

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

或者如果你想讓它倒退

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

num 是您給出的等效索引。

這是假設您當然想讓數組只讀,並且建議在執行這些操作之前進行某種驗證。 (驗證數字是否為正數且小於 26)如果這適用於您的情況,那就太好了。

如果你想做一個 secer 密碼:IE 將任何字符轉換為任何偏移量,你可以執行以下操作:

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以正確的狀態返回

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM