【问题标题】:Is converting to String the most succinct way to remove the last comma in output in java?转换为 String 是删除 Java 输出中最后一个逗号的最简洁方法吗?
【发布时间】:2017-08-25 16:31:43
【问题描述】:

所以基本上这就是我的代码的样子

public static void printPrime(int[] arr)
    {
        int len = arr.length;

        for(int i = 0; i < len; i++)
        {
            int c = countFactor(arr[i]);

            if(c == 2)
            {
             System.out.print(arr[i] + ",");
            }

        }
    }

所以输出最后确实有“逗号”。我试图环顾四周以删除最后一个逗号,一些答案说要单独打印最后一个元素,但这只有在输出取决于 for 循环而不是 if 条件时才会发生。 但正如你所见,我不知道我将从 if 条件中得到多少元素。我只能想到两件事,添加另一个循环或使用 String 然后 substr 输出。

所以我把它转换成字符串

public static void printPrime(int[] arr)
    {
        int len = arr.length;
        String str = "";
        for(int i = 0; i < len; i++)
        {
            int c = countFactor(arr[i]);

            if(c == 2)
            {
              str = str + arr[i] + ",";
            }

        }
        str = str.substring(0, str.length()-1);
        System.out.println(str);
    }

我的问题是关于了解类似问题的最佳方式(转换为字符串然后对其进行子字符串化?)或者是否还有更好的方法?我好像不见了。

【问题讨论】:

  • 你可以使用String.join
  • 是的。从某处的countFactor() 收集值,然后在它们上使用String.join()。为了获得额外的信用,请使用 IntStream 流式传输数组,这样您就不需要为 countFactor() 的值创建额外的空间。
  • @Shad 在循环中使用字符串连接不是一个好主意:如果要构建字符串,请使用StringBuilder 以避免构建大量中间字符串。
  • @Kayaman 我实际上并没有直接使用来自countFactor() 的值并输出它们。如您所见,我正在对整数数组元素进行操作。
  • @Kayaman 因为我应该首先使用 String.join() ,所以我想我应该将数组中的所有 int 元素转换为 String.Adding to Single String 不会做,因为所有添加到该字符串的元素将使其成为一个元素字符串。字符串数组不会做,因为我事先不知道大小。所以我想我只剩下使用 String ArrayList 了吗?然后最后使用 String.join 就可以了。

标签: java


【解决方案1】:

您不必构造字符串。考虑以下细微调整:

public static void printPrime(int[] arr)
{
    int len = arr.length;
    String sep = "";    // HERE
    for(int i = 0; i < len; i++)
    {
        int c = countFactor(arr[i]);

        if(c == 2)
        {
         System.out.print(sep);  // HERE
         sep = ",";
         System.out.print(arr[i]);
        }

    }
}

首先打印分隔符,并将其值存储在变量中:第一次打印时,它将打印空字符串。此后,它会打印逗号。

【讨论】:

    【解决方案2】:

    对于空数组(长度为 0)、单例数组(长度为 1)和长数组(大长度),无论您使用什么方法都应该正确操作。

    添加逗号然后删除它需要对空数组大小写进行特殊处理。所以无论你做什么,你都必须有条件代码(一个 if 语句)。

    【讨论】:

    • @AndyTurner 的回答没有额外的条件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    • 2014-10-27
    相关资源
    最近更新 更多