连接字符串数组+分隔符

时间:2016-09-26 02:36:01

标签: java arrays string join

java noob here ...

这让我感到疯狂,因为我知道这件事情很简单,但我已经做了30分钟......

这来自于codefights:

对于参数= [" Code"," Fight"," On","!"]和separator =&#34 ; /",输出应该是 myConcat(arguments,separator)=" Code / Fight / On /!/"。

我的代码:

String myConcat(String[] arguments, String separator) {
    for(int i = 0; i <= arguments.length; i++){
        String output = arguments[0] + separator;
    }
    return output;
}

错误:第5行的file.java:错误:找不到符号     返回输出;            ^   符号:可变输出   location:class _runfniek 1错误

任何提示都将不胜感激......

3 个答案:

答案 0 :(得分:1)

String output = arguments[0] + separator;

参数[0] - &gt;参数[I] 并且必须在for {}

中定义String输出var

错误提示非常明显。

答案 1 :(得分:1)

首先,StringBuilder优先于+操作。

其次,在循环体中定义String输出是错误的,它实际上没有保存该值。

第三,需要考虑边界,即不应为参数数组的最后一个元素追加分隔符。

第四,它是i < arguments.length,而不是i <= arguments.length

String myConcat(String[] arguments, String separator) {
    StringBuilder output = new StringBuilder();
    for(int i = 0; i < arguments.length; i++){
        output.append(arguments[i]);
        if(i < arguments.length-1){ 
             output.append(separator);
        }
        return output.toString();
    }

答案 2 :(得分:1)

问题是字符串output仅存在于for语句中,需要在其外部创建,理想情况下使用stringbuilder:

    String myConcat(String[] arguments, String separator){
        StringBuilder output = new StringBuilder();
        for(int i = 0; i < arguments.length; i++){
            output.append(arguments[i]);
            output.append(separator);
        }
        return output.toString();
    }

您似乎想要尾随分隔符,如果不需要,可以使用if语句将其删除