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

How to remove last comma and space in array? Java

本问题已经有最佳答案,请猛点这里访问。

伙计们,我想知道如何从数组中删除多余的逗号和空格?当我运行程序时,它会给我1、2、3、4、5、。我想要的是1、2、3、4、5。主管道必须保持不变。PrintArray方法是我需要帮助的方法。

指重复的问题陈述。这是不同的,因为它要求用户输入一个数字并相应地打印数组。这不是重复的问题。

1
2
3
4
5
6
7
8
9
10
11
12
    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("]");
    }
}


不要一开始就打印出来。仅当i > 0时,在字符串前打印逗号。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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("]");
}

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

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

注意,这将打印括号而不是大括号。为了完整性起见,如果您自己实现了这一点,除了其他边界条件(如长度=0)之外,不要忘记检查数组是否为null

这里有一个使用StringBuilder的例子,在检查null和length=0之后,我总是删除最后两个字符。如果要为列表/数组中的每个项计算一个非常复杂的字符串,那么这可能比复制代码使每个项在循环之外更容易,并且比每次通过循环检查i==array.length-1稍微快一点。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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();
   }
}


我会这样修改它(在下一项之前打印逗号,对于索引>0)

1
2
3
4
5
6
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中,

1
2
3
4
5
6
7
System.out.println(
 "[" +
  Arrays.stream(array)
      .mapToObj(String::valueOf)
      .collect(Collectors.joining(","))
  +"]"
);