Java打印整个数组,带有“,”符号?

时间:2013-06-24 20:05:25

标签: java arrays

System.out.print("Please select a game: ");
for (String s : gamesArray) {       
    System.out.print(s + ", "); 
}

输出:

Please select a game: spin, tof, Press any key to exit...

我的输出除外:

Please select a game: spin, tof
Press any key to exit...

为什么在最后一个数组项后添加另一个','? 如何预防?

7 个答案:

答案 0 :(得分:8)

为什么不拨打Arrays#toString(array)

System.out.print("Please select a game: %s%n", 
                  Arrays.toString(gamesArray).replaceAll("(^\\[)|(\\]$)", ""));

要避免使用正则表达式:

String tmp = Arrays.toString(gamesArray);
System.out.print("Please select a game: %s%n", tmp.substring(1, tmp.length()-1));

答案 1 :(得分:7)

// iterate throght array
for ( int i = 0; i < gamesArray.length; i++ ) {

    // get the element
    String s = gamesArray[i];

    // print it
    System.out.print( s );

    // test if the current element is not the last (array size minus 1)
    if ( i != gamesArray.length - 1 ) {

        // if it is not the last element, print a comma and a space.
        System.out.print( ", " );
    }
}

答案 2 :(得分:2)

  

为什么在最后一个数组项后添加另一个','?

由于最后一项没有什么特别之处,您在每个元素的末尾添加了,

  

我该如何预防?

您可以尝试使用常规for - 循环,只有在您的on不是数组的最后一个索引时才添加,。同样地,您可以在之前添加, 除第一个之外的每个元素,您将获得相同的效果。

int len = gamesArray.length;

if (len > 0)
    System.out.println(gamesArray[0]);

for (int i = 1; i < len; i++)
    System.out.print(", " + gamesArray[i]);

答案 3 :(得分:2)

您可以使用Guava库吗?如果是,那就是一行代码:

String result = Joiner.on(", ").join(gamesArray);
System.out.println(result);

答案 4 :(得分:1)

最后一个逗号就在那里,因为你在每个元素后打印一个逗号。

您可以通过重写for循环来解决此问题:

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

答案 5 :(得分:1)

处理这个问题的另一种方法(特别是如果你知道数组永远不会是空的话)就是在循环之前写第一个元素,然后让循环写, <element>

答案 6 :(得分:0)

在打印“,”之前,您必须测试阵列中是否有更多元素,以避免在最后一个游戏名称后面有一个元素。

final Iterator<String> iterator = Arrays.asList(gamesArray).iterator();
while(iterator.hasNext()) {
    System.out.print(iterator.next());
    if(iterator.hasNext()) {
        System.out.print(", ");
    }
}
System.out.println();