簡體   English   中英

帶有整數數組的字符串方法

[英]String method with array of integers

請幫忙寫代碼。 我嘗試添加子字符串等以刪除結尾逗號。 我怎樣才能做到這一點? 示例: {1,2,3}到字符串現在是"1,2,3,"

public static String arrayToString(int[] numbers) 
{
  String stringify = "";
  for (int index = 0; index < numbers.length; index++) 
  {
    stringify = numbers[index] + ", ";
  }
  return stringify;
}

最好的辦法

刪除整個方法。 使用Arrays.toString(int[])代替。 為什么要像這樣重寫核心功能?

串流方式

return Arrays.stream(numbers)
  .boxed()
  .map(String::valueOf)
  .collect(Collectors.joining(", "));

StringBuilder方式

StringBuilder out = new StringBuilder();
for (int i = 0; i < numbers.length; i++) {
    if (i != 0) out.append(", ");
    out.append(numbers[i]);
}
return out.toString();

在循環中添加字符串是不好的形式(它會浪費大量內存),所以不要這樣做。 上述策略按優先順序排列,最高選項領先於其他選項數英里。

您可以將方法修改為以下方法:

public static String arrayToString(int[] numbers) 
{
  String stringify = "";
  for (int index = 0; index < numbers.length; index++) 
  {
    stringify = numbers[index];
    if (index < numbers.length - 1) {
        stringify += ", ";
    }
  }
  return stringify;
}

我更喜歡將其視為除第一個數字之外的每個數字之前都有一個分隔符。 或者,同樣地,每個數字之前都有一個分隔符,但第一個分隔符是空的。

public static String arrayToString(int[] numbers) 
{
  String separator = "";
  String stringify = "";
  for (int index = 0; index < numbers.length; index++) 
  {
    stringify += separator + numbers[index];
    separator = ", "
  }
  return stringify;
}

請注意,我將stringify的分配固定為+=而不是= ,否則您只會得到最后一個數字。

在實踐中,我可能會使用 StringBuilder,但我想讓它盡可能接近原始版本。 對於 StringBuilder,可以使用相同的分隔符技術。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM