使用循环来防止无限的IF语句

时间:2015-03-21 17:33:20

标签: java loops if-statement

}`public static void drawBorder() {   // Asterisks based on wins
    if (gameCount.asterisk == 0) {
        System.out.println(" ");
    }
    if (gameCount.asterisk == 1) {
        System.out.println("**********");
    }
    if (gameCount.asterisk == 2) {
        System.out.println("********************");
    }


}

如何为此使用循环,以便打印10个星号乘以gameCount.asterisk的值而不是使用不必要的if语句?

5 个答案:

答案 0 :(得分:1)

public static void drawBorder() {   // Asterisks based on wins
    StringBuilder asterisks = new StringBuilder("");
    for (int i = 0; i < gameCount.asterisk; i++) {
        asterisks.append("**********");
    }
    System.out.println(asterisks);
}

答案 1 :(得分:0)

您可以执行以下操作来生成星号字符串:

String asterisks = "";
for(int i=0; i< gameCount.asterisk; i++)
{
    asterisks += "*";
}

然而,使用StringBuilder会更有效。

答案 2 :(得分:0)

public static void drawBorder() {   // Asterisks based on wins
for (int i = 0; i < gameCount.asterisk; i++)
{
    System.out.print("**********");
}
}

使用print而不是println在同一行上打印星号。

答案 3 :(得分:0)

这应该可以用于此目的:

String asteriskString = "";
for (int i = 0; i < gameCount.asterisk; i ++) {
    asteriskString.concat("**********");
}
System.out.println(asteriskString);

它为每个gameCount.asterisk添加10个星号到asteriskString。之后,你可以打印出来。

答案 4 :(得分:0)

如果您使用的是Java 8,可以这样做:

public static void drawBorder() {
    System.out.println(IntStream.range(0, gameCount.asterisk * 10)
                                .mapToObj(i -> "*")
                                .collect(Collectors.joining()));
}

IntStream.range(0, gameCount.asterisk * 10)将创建一个范围,从0gameCount.asterisk * 10(不包括)。对于gameCount.asterisk == 1,它会创建:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

然后使用*将范围中的每个元素映射到mapToObj(i -> "*")

["*", "*", "*", "*", "*", "*", "*", "*", "*", "*"]

并将结果加入String collect(Collectors.joining())

"**********"