【问题标题】:Static Method that takes integer array as parmeter and Return string以整数数组为参数并返回字符串的静态方法
【发布时间】:2015-09-17 13:05:21
【问题描述】:

我想创建一个静态方法Static String displayArray(int [] array),它以整数数组为参数,使用循环创建并返回一个新的String,表示用大括号括起来并用逗号分隔的数组。 例如,

int [] myArray = { 12,9,10,25};
String str = displayArray(myArray);
System.out.println (str);   // should display {12,9,10,25}

我的解决方案:

public static String displayArray (int [] array) {
    for (int i=0; i< array.length; i++) {
        System.out.println(array[i]);
    }
    return null;
}

但它给出的输出如下:

12
9
10
25
null

【问题讨论】:

  • 因为returns null;
  • 您的循环使用System.out.println - 它不会做任何事情来创建新字符串。提示:使用StringBuilderappend,最后调用toString...
  • 只需使用Arrays.toString,不要重新发明轮子。另外,请格式化您的代码 - 目前几乎无法辨认。
  • 我不应该使用任何额外的包或实用程序
  • 您应该立即将该部分添加到您的问题中。

标签: java arrays static-methods


【解决方案1】:

您需要构建一个 String 对象才能返回。现在你正在返回 null,这实际上什么都没有。

我建议使用 StringBuilder,它比直接连接字符串要快一点。因此,在您的循环之前,您需要定义一个 StringBuilder 对象并添加左大括号:

StringBuilder returnString = new StringBuilder();
returnString.append("{");

然后在您的循环中,您可以连接每个数字:

returnString.append(Integer.toString(array[i]);

之后,您需要检查是否有最后一个元素,如果没有,请附加逗号。

最后附加右大括号,而不是 return null 使用:

return returnString.toString();

【讨论】:

  • 代码仍然没有 , 分隔值和结束大括号!
  • "之后,您需要检查是否有最后一个元素,如果没有,请附加逗号。" - 我不想为 OP 编写所有代码。
【解决方案2】:

你可能需要这个:

public static String displayArray(int[] array) {
        StringBuilder builder = new StringBuilder("{");
        for (int i = 0; i < array.length; i++) {
            builder.append((array[i])).append(",");
        }
        return builder.substring(0, builder.length() - 1).concat("}");
    }

【讨论】:

  • 循环中没有条件,快得多+1
【解决方案3】:

类似这样的:

public static String displayArray (int [] array) {
    StringBuilder sb = new StringBuilder();
    for (int i=0; i< array.length; i++) {
        sb.append(array[i]);
        if(i!=array.length-1)
            sb.append(",");
    }
    return "{"+sb.toString()+"}";
}

【讨论】:

  • 当你可以用StringBuilder sb = new StringBuilder("{");初始化StringBuilder时,为什么要在return "{"+sb.toString()+"}";中创建额外的字符串
【解决方案4】:

是的,正是它为您提供了正确的输出。 要获得所需的输出,您可以按如下方式修改显示数组函数:

   public static String displayArray (int [] array) {
       String str = "";
       for (int i=0; i< array.length; i++) {
            str += array[i]+",";
       }
       returns str;
  }

【讨论】:

  • 字符串末尾会有逗号,缺少大括号,不建议直接追加到字符串,操作很慢
【解决方案5】:
public static String displayArray( int[] array )
{
    return "{" + Arrays.toString( array ).replace("[", "").replace("]", "")  + "}";
}

放弃@BorisTheSpider 的想法,因为我发现这比Stringbuilder 更容易,这是您返回字符串{ val1, val2, val3 } 的方法。

基本上,手动打印大括号并将括号替换为""

【讨论】:

    【解决方案6】:

    改为这样做:

        public static String displayArray (int [] array) {
    
        StringBuilder sb = new StringBuilder();
                for (int i=0; i< array.length; i++) {
    
                    sb.append(array[i]+",");
                }
    String result=sb.toString()+",";
           result=result.replace(",,","");
    
        return "{"+result+"}";
        }
    

    【讨论】:

    • 缺少逗号和括号
    • 它的输出如下:2901415,我希望它是 {12,9,10,25}
    • 现在试试这个,你可以使用替换去掉最后一个逗号
    【解决方案7】:

    没有一个答案能像你想要的那样显示输出。

    public static String displayArray (int [] array) {
        StringBuilder sb = new StringBuilder();
        sb.append("{");   
            for (int i=0; i< array.length; i++) {
                sb.append(array[i]);
                if(i != array.length-1)
                  sb.append(",");
            }
        sb.append("}"); 
        return sb.toString();
    }
    

    【讨论】:

    • 还有一个,
    • @Arpit 更好吗?
    猜你喜欢
    • 1970-01-01
    • 2021-04-26
    • 1970-01-01
    • 2011-05-27
    • 1970-01-01
    • 2015-06-09
    • 1970-01-01
    • 1970-01-01
    • 2013-11-03
    相关资源
    最近更新 更多