我有一个数组:[[a, b], [c, d], [e, f]]
a
,b
,c
,d
,e
和f
等数组值必须转换为数字(整数)
让我们说a = 0, b = 1, c = 2, ..., f = 5
。
因此,转换结果应为:[[0, 1], [2, 3], [4, 5]]
如何用Java做到这一点?
答案 0 :(得分:1)
字符是连续的(并存储为数字) - 所以基本上,您要查找给定字符与'a'
之间的差异:
char[][] chars = /* fill the array */;
for (int i = 0; i < chars.length; ++i)
for (int j = 0; j < chars[i].length; ++k) {
// To produce an int value (e.g., replace 'a' with 0):
chars[i][j] -= 'a';
// If you want a printable char (e.g., replace 'a' with '0')
// comment out the above statement and use this one instead:
// chars[i][j] = chars[i][j] - 'a' + '0';
}
}
答案 1 :(得分:1)
ASCII /&#39; a&#39;的十进制值是97.
我认为你有一系列的人物。
将任何字符转换为整数都会返回其十进制/ ascii值。
char ch = 'a'; //define character
int ch_ascii = (int)ch; // get its ascii/decimal value
System.out.println(ch_acii); //Ascii of 'a' = 97
您将获得97作为输出。
所以迭代你的二维数组。
将Typecast字符转换为整数并将97减去它。 您将以您想要的方式获得输出。
希望这会有所帮助。 评论是否需要进一步的帮助。
答案 2 :(得分:1)
使用ASCII值,然后将它们的回合例如a到z 97到122减去sentinel值97,你将得到你的结果
答案 3 :(得分:0)
试试这个:
String[][] test = {{"a", "b"}, {"c", "d"}};
for (int i=0; i<test.length; i++) {
for (int o=0; o<test[i].length; o++) {
Log.d("AWAISKING_OLD", "--------------");
Log.d("AWAISKING_OLD", ""+test[i][o]);
test[i][o] = test[i][o].replace("a", "1");
test[i][o] = test[i][o].replace("b", "2");
test[i][o] = test[i][o].replace("c", "3");
test[i][o] = test[i][o].replace("d", "4");
Log.d("AWAISKING_NEW", ""+test[i][o]);
Log.d("AWAISKING_OLD", "--------------");
}
}