簡體   English   中英

將帶字母的字符串數組轉換為java中的int數組

[英]converting a string array with letters into an int array in java

好的我將嘗試在這里解釋我的問題,我需要做的是將字符串數組轉換為int數組。

這是我的一部分(初始設置)

   System.out.println("Please enter a 4 digit number to be converted to decimal ");
    basenumber = input.next();

    temp = basenumber.split("");
    for(int i = 0; i < temp.length; i++)
        System.out.println(temp[i]);

    //int[] numValue = new int[temp.length];
    ArrayList<Integer>numValue = new ArrayList<Integer>();

    for(int i = 0; i < temp.length; i++)
        if (temp[i].equals('0')) 
            numValue.add(0);
        else if (temp[i].equals('1')) 
            numValue.add(1);
                     ........
        else if (temp[i].equals('a') || temp[i].equals('A'))
            numValue.add(10);
                     .........
             for(int i = 0; i < numValue.size(); i++)
        System.out.print(numValue.get(i));

基本上我要做的是將0-9設置為實際數字,然后從輸入字符串(例如Z3A7)開始將az設置為10-35,理想情況下將打印為35 3 10 7

在循環中嘗試這個:

Integer.parseInt(letter, 36);

這將把letter解釋為base36號碼(0-9 + 26個字母)。

Integer.parseInt("2", 36); // 2
Integer.parseInt("B", 36); // 11
Integer.parseInt("z", 36); // 35

您可以在循環中使用此單行(假設用戶不輸入空字符串):

int x = Character.isDigit(temp[i].charAt(0)) ?
        Integer.parseInt(temp[i]) : ((int) temp[i].toLowerCase().charAt(0)-87) ;

numValue.add( x );

上面代碼的解釋:

  • temp[i].toLowerCase() => z和Z將轉換為相同的值。
  • (int) temp[i].toLowerCase().charAt(0) => 字符的ASCII碼。
  • -87 =>根據您的規范減去87。

考慮到你想把Z表示為35,我寫了以下函數

更新:

Z的ASCII值為90,因此如果要將Z表示為35,則應將55中的每個字符減去(90-35 = 55):

public static int[] convertStringArraytoIntArray(String[] sarray) throws Exception {
    if (sarray != null) {
        int intarray[] = new int[sarray.length];
        for (int i = 0; i < sarray.length; i++) {
            if (sarray[i].matches("[a-zA-Z]")) {
                intarray[i] = (int) sarray[i].toUpperCase().charAt(0) - 55;
            } else {
                intarray[i] = Integer.parseInt(sarray[i]);
            }
        }
        return intarray;
    }
    return null;
}

暫無
暫無

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

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