gpt4 book ai didi

java 将 char 二维数组(字母)的值转换为整数(数字)

转载 作者:太空宇宙 更新时间:2023-11-04 06:58:03 26 4
gpt4 key购买 nike

我很困惑如何将二维字符数组中的值转换为数字(整数)。

假设数组为:[[a, b],[c, d],[e, f]]{{'a','b'},{'c','d'},{'e','f'}}

该数组中的所有值都将转换为数字,a=0、b=1、c=2、d=3、e=4、f=5。

我期望的结果如下:[[0, 1], [2, 3], [4, 5]]{{0, 1},{2, 3},{4, 5}}

如果只是一串“abcdef”,我可以使用charAt(),但我不能在数组中使用它,尤其是在char数组中。所以,我使用.replace。

package array_learning;

public class test {
public static void main(String[] args){
char [][] word= {{'a','b'},{'c','d'},{'e','f'}};
int strLength = word.length;
for(int i = 0; i<strLength; i++){
for(int j=0; j<2; j++){
String strWord = Character.toString(word[i][j]);
strWord = strWord.replace("a","0");
strWord = strWord.replace("b","1");
strWord = strWord.replace("c","2");
strWord = strWord.replace("d","3");
strWord = strWord.replace("e","4");
strWord = strWord.replace("f","5");
System.out.print(strWord+" ");
}
System.out.println();
}

}
}

但是,结果并不是我所期望的。

结果:

0 1 

2 3

4 5

如何以正确的方式解决这个问题?

最佳答案

考虑:

import java.util.Arrays;   

public class Ctest {
public static void main(String[] args) {
char[][] word= { {'a', 'b'}, {'c', 'd'}, {'e', 'f'} };

println(word); // format with brackets e.g., [[a, b], [c, d]]
System.out.println(Arrays.deepToString(word)); // same format

for (int i = 0; i < word.length; i++) {
for (int j = 0; j < word[i].length; j++) {
if (word[i][j] >= 'a' && word[i][j] <= 'f') {
word[i][j] = (char) ((word[i][j] - 'a') + '0');
}
}
}

println(word); // formatted with brackets
printPlain(word); // formatted without brackets
}

public static void println(char[][] word) {
System.out.print("[");
for (int i = 0; i < word.length; i++) {
if (i > 0) System.out.print(", ");
System.out.print("[");
for (int j = 0; j < word[i].length; j++) {
if (j > 0) System.out.print(", ");
System.out.print(word[i][j]);
}
System.out.print("]");
}
System.out.println("]");
}

public static void printPlain(char[][] word) {
for (int i = 0; i < word.length; i++) {
if (i > 0) System.out.print(", ");
for (int j = 0; j < word[i].length; j++) {
if (j > 0) System.out.print(", ");
System.out.print(word[i][j]);
}
}
System.out.println();
}
}

我所做的主要更改是,数组中的值实际上已转换(我不确定您是否需要这样做;您之前没有将任何新值存储回数组中),数据作为 char 处理,而不转换为 String,转换是通过计算完成的,而不是每个值的特殊情况,并且转换数据和打印数据已相互分离。

还有一些细微的变化。数据现在以您演示的格式打印,带有括号,不假设内部数组始终只有两个元素,并且类名已更改为以大写字母开头。

还有一个小注意事项。在将值从小写字母转换为数字的行中,表达式位于括号中并被强制转换回 char。这是因为当您添加和减去 chars 时,Java 会执行向 int 的扩展转换,因此要将值存储回 char[][] 中,需要再次将其转换为 char

我忘记了 Java 中的 java.util.Arrays 类中已经有一个方法可以用括号格式化多维数组:Arrays.deepToString(word) 将为您提供与上面的 println 方法相同的格式。如果您更喜欢更清晰的输出格式,我还展示了一个类似的 printPlain 方法,但缺少括号。您还可以轻松修改此方法,以便它附加到 StringBuilder 并返回 String,而不是直接打印数组。

关于java 将 char 二维数组(字母)的值转换为整数(数字),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22458725/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com