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)
我想替换a用10,b用11,c用12,等等.
如果我在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)
问题是我想更换a与10和10不是人物了,因为它是由两个字母.这就是为什么我想知道如何使这个代码工作,strings而不是characters?
我不是替换中的值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)
暗示
'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)
希望你明白这个主意.