小程序 - 如何使用字符串而不是字符来使用此代码?

cnm*_*esr 3 java arrays string char

我正在慢慢地尝试编写一个将十六进制数转换为十进制数的程序.我对阅读完成的,众所周知的代码不感兴趣,因为我想自己做.我有一个想法,但有一些东西干扰我.

import java.util.Scanner;
public class Test{
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        String any = input.nextLine();
        char[] cArray = any.toCharArray();
        for(int i=0; i<cArray.length; i++){
            System.out.print(cArray[i]+" ");
        }
    }
}

Input: ab12
Output: a b 1 2
Run Code Online (Sandbox Code Playgroud)

我想替换a10,b11,c12,等等.

如果我在for循环中添加if语句,它可以工作.

        for(int i=0; i<cArray.length; i++){
            if(cArray[i] == 'a'){
               cArray[i] = '10'; // doesn't work, read below
            }
            System.out.print(cArray[i]+" ");
        }
Run Code Online (Sandbox Code Playgroud)

问题是我想更换a1010不是人物了,因为它是由两个字母.这就是为什么我想知道如何使这个代码工作,strings而不是characters

Ste*_*ith 5

我不是替换中的值cArray,而是创建一个StringBuilder,并将所有值附加到该值(因为大概你只想打印出结果): -

StringBuilder str = new StringBuilder();

for(int i=0; i<cArray.length; i++){
        if(cArray[i] == 'a'){
           str.append(10);
        } else if (cArray[i] == 'b'){
           [etc]
        } else {
           str.append(cArray[i]);
        }
}

System.out.print(str.toString());
Run Code Online (Sandbox Code Playgroud)


YCF*_*F_L 5

暗示

'a' - 87 = 10
Run Code Online (Sandbox Code Playgroud)

所以你可以使用:

(int) cArray[i] - 87
Run Code Online (Sandbox Code Playgroud)

因为:

(int)'a' = 97
Run Code Online (Sandbox Code Playgroud)

希望你明白这个主意.