如何删除数组中的最后一个逗号和空格? Java的

时间:2017-04-12 22:28:36

标签: java arrays for-loop

我想知道如何从数组中删除额外的逗号和空格?当我运行程序时,它给了我{1,2,3,4,5,}。我想要的是 {1,2,3,4,5}。主要必须保持不变。 PrintArray方法是我需要帮助的方法。

参考重复的问题陈述。 这是不同的,因为它向用户询问数字并相应地打印数组。这不是一个重复的问题。

    public static void printArray(int[] myArray)
    {

        System.out.print("[");
        for(int i = 0; i < myArray.length; i++)
        {
            myArray[i] = i + 1;
            System.out.print(myArray[i] + ", ");
        }
        System.out.println("]");
    }
}

3 个答案:

答案 0 :(得分:5)

首先不要打印它。在字符串前打印逗号,仅在i > 0

时打印
public static void printArray(int[] myArray)
{

    System.out.print("[");
    for(int i = 0; i < myArray.length; i++)
    {
        myArray[i] = i + 1;
        if (i > 0)
        {
            System.out.print(", ");
        }
        System.out.print(myArray[i]);
    }
    System.out.println("]");
}

答案 1 :(得分:4)

这样做的简单方法就是使用Arrays.toString

public static void printArray(int[] myArray)
{
    System.out.print( Arrays.toString( myArray ) );
}

注意这会打印括号而不是大括号。为了完整性,如果你自己实现这个,除了长度= 0之外的其他边界条件,不要忘记检查数组是否为null

以下是使用StringBuilder的示例,其中我在检查null和长度= 0后总是删除最后两个字符。如果您有一个非常复杂的字符串来计算每个项目list / array,这比复制代码以使每个项在循环外更容易,并且比每次循环检查i==array.length-1稍快一些。

public class MyArraysToString
{

   public static void main( String[] args )
   {
      int[] test = { 8, 7, 6, 5, 4, };
      printArray( test );
      System.out.println( myToString( null ) );
      System.out.println( myToString( new int[0] ) );
      System.out.println( myToString( test ) );
   }

   public static void printArray( int[] myArray )
   {
      System.out.println( Arrays.toString( myArray ) );
   }

   public static String myToString( int[] a ) {
      if( a == null ) return "null";
      if( a.length == 0 ) return "{}";
      StringBuilder sb = new StringBuilder();
      sb.append( '{' );
      for (int i = 0; i < a.length; i++) {
         sb.append( a[i] );
         sb.append( ", " );
      }
      sb.setLength( sb.length()-2 );
      sb.append( '}' );
      return sb.toString();
   }
}

答案 2 :(得分:2)

我会将其修改为(在下一项之前打印逗号,索引&gt; 0)

System.out.print("[");
for(int i = 0; i < myArray.length; i++) {
  myArray[i] = i + 1;
  System.out.print(((i > 0) ? ", " : "") + myArray[i]);
}
System.out.print("]");

或者,在Java 8中,

System.out.println(
  "[" + 
  Arrays.stream(array)
      .mapToObj(String::valueOf)
      .collect(Collectors.joining(", "))
  + "]"
);