如何向char数组添加字符串?

uz75evzq  于 2021-07-03  发布在  Java
关注(0)|答案(3)|浏览(886)
public static void main (String[] args) {
    char[][] c = {{'a', 'b', 'c'},
                  {'d', 'e', 'f'}};
    show(c);        
}
public static void show (char[][] c) {
    for (int i = 0; i < c.length; i++) {
        System.out.println(c[i]);

我想在每个字母之间留一个空格。我试图在c[i]之后写+“,但是我得到一个警告:“必须显式地将char[]转换为字符串”。如何向数组中添加字符串?提前谢谢!

wgeznvg7

wgeznvg71#

现在你做错的是,你正在打印每个子数组。我不确定我是否正确理解你。但是如果你想打印每一张 char 对于每个字母之间有空格的2d字符数组,则应使用两个字符 for 循环遍历整个2d数组并按如下方式打印每个字符:

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

public static void show(char[][] c) {
    for (int i = 0; i < c.length; i++) {
        for (int j = 0; j < c[i].length; j++) {
            System.out.print(c[i][j] + " ");
        }
    }
}

输出:

a b c d e f

编辑:
要在单独的行中打印每个子数组,只需更改 show 方法如下:

public static void show(char[][] c) {
    for (int i = 0; i < c.length; i++) {
        for (int j = 0; j < c[i].length; j++) {
            System.out.print(c[i][j] + " ");
        }
        System.out.println(); // add a println here
    }
}

新输出:

a b c 
d e f
hgncfbus

hgncfbus2#

使用java streams,您可以做到:

Arrays.stream(c).map(String::valueOf)
                    .map(i -> i.replace("", " "))
                    .forEach(System.out::print);

对于输出

a b c  d e f

或:

Arrays.stream(c).map(String::valueOf)
                   .map(i -> i.replace("", " "))
                   .forEach(System.out::println);

对于输出:

a b c 
d e f

对于二维字符数组中的每个字符数组,我们将其转换为 String :

map(String::valueOf)

然后在每个字符串的字符之间添加一个“”:

map(i -> i.replace("", " "))

最后,我们打印每个字符串的结果:

forEach(System.out::println)
rnmwe5a2

rnmwe5a23#

你可以用 String.codePoints 方法进行迭代 int 此二维数组的字符值,并在它们之间添加空格:

public static void main(String[] args) {
    char[][] chars = {{'a', 'b', 'c'}, {'d', 'e', 'f'}};
    System.out.println(spaceBetween(chars)); // a b c d e f
}
public static String spaceBetween(char[][] chars) {
    return Arrays.stream(chars)
            // Stream<char[]> to IntStream
            .flatMapToInt(arr -> String.valueOf(arr).codePoints())
            // codepoints as characters
            // return Stream<Character>
            .mapToObj(ch -> (char) ch)
            // characters as strings
            // return Stream<String>
            .map(String::valueOf)
            // join characters with
            // whitespace delimiters
            .collect(Collectors.joining(" "));
}

另请参阅:是否有其他方法可以删除字符串中的所有空白?

相关问题