将char附加到char数组java

时间:2015-02-05 18:39:36

标签: java arrays char

我正在尝试编写一个接受并返回字符数组的方法。我想用'h''i'替换每个空间''。我不能使用字符串类或任何其他帮助程序类。我在“总+ = ch”时遇到困难因为它们是两种不同的类型 我想要的是什么

char[] characterStr = {'w','h','a','t','s',' ','u','p'}
System.out.println(characterStr);
System.out.println(Space(characterStr));

whats up
whatshiup

到目前为止我的代码:

public static char[] Space(char[] input){
    char[] total;

    for(char ch: input){
        if(ch==' '){
            ch = 'h'+'i';
            total += ch;
        }
        else{
            total += ch;
        }

    return total;

1 个答案:

答案 0 :(得分:2)

您的基本问题似乎是您似乎并不了解arrays如何使用Java。

在Java中,数组具有固定长度,并且每个位置只能包含声明数据类型的一个。例如,如果您有char[][w, h, a, t, s, , u, p],则其长度将永久固定为8

您可以替换给定位置的角色,但如果您不止一次,则只会覆盖该值。

    char[] characterStr = {'w','h','a','t','s',' ','u','p'};
    characterStr[5] = 'h'; // [w, h, a, t, s, h, u, p]
    characterStr[5] = 'i'; // [w, h, a, t, s, i, u, p]

此外,您无法使用+=尝试附加值:

    char[] characterStr = {'w','h','a','t','s',' ','u','p'};
    characterStr += 'h'; // compile error! operator += is undefined for these arguments

您必须使用arrayname[index] = value;语法为给定位置指定值。

您需要做的事情(如评论中所述)首先计算您尝试创建的数组的大小,方法是计算原始数组中的空格数。您已经遍历并查找空间,因此您只需要替换尝试使用count修改数组的代码,并根据该大小创建输出数组:

    int size = input.length;
    for (char ch: input) {
        if (ch == ' ') {
            size += 1;
        }
    }
    char[] total = new char[size];

另请注意,我并未将total声明为char[]类型的变量,但我使用 new 关键字来实际创建它。与其他对象一样,Java中的数组需要显式创建,或者在尝试使用时最终会得到NullPointerException

创建新阵列后,您可以遍历原始输入数组,并在看到空格时复制非空格字符(或'h''i')。

您不希望为此使用for-each循环,因为您需要手动跟踪数组索引。 (提示:一旦看到空格,输入数组的索引和输出数组的索引就不一样了。)