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

输出:

请选择一个游戏:spin, tof, Press any key to exit...

我例外的输出:

请选择一个游戏:spin, tof
按任何一个键退出...

为什么在最后一个数组项之后添加另一个“,”?我该如何预防?

4

7 回答 7

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));
于 2013-06-24T20:10:08.837 回答
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( ", " );
    }
}
于 2013-06-24T20:07:43.813 回答
2

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

因为最后一项没有什么特别之处,所以您在每个元素,的末尾添加。

我该如何预防?

您可以尝试使用常规for-loop 并且仅,在您所在的索引不是数组的最后一个索引时才添加。等效地,您可以在除第一个元素之外的每个元素, 之前添加,您将获得相同的效果。

int len = gamesArray.length;

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

for (int i = 1; i < len; i++)
    System.out.print(", " + gamesArray[i]);
于 2013-06-24T20:07:46.080 回答
2

你可以使用Guava库吗?如果是,这是一行代码:

String result = Joiner.on(", ").join(gamesArray);
System.out.println(result);
于 2013-06-24T20:22:08.823 回答
1

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

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

for(int i=0;i<gameArray.length;i++){
    System.out.print(gameArray[i]);
    if(i!=gameArray.length-1){
        System.out.println(", ");
    }
}
于 2013-06-24T20:08:42.357 回答
1

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

于 2013-06-24T20:10:52.430 回答
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();
于 2013-06-24T20:17:34.823 回答