Java 如何在不使用循环或条件的情况下打印n个星星

Java 如何在不使用循环或条件的情况下打印n个星星,java,Java,假设我们给运行时值n,并且我们希望在不使用循环和/或条件的情况下打印单行中的n个星号。我们如何在java中做到这一点 好吧,这里有一个你可以使用的巧妙的小技巧 System.out.println(new String(new char[n]).replace("\0", "*")); 这个小片段的功劳归于user102008在 实际上,您是在使用具有[n]个索引的新字符数组创建一个新字符串。创建新数组而不指定值时,会给出默认值。默认字符是'\0'(空字符)。因此,通过在创建的字符串上使用re

假设我们给运行时值n,并且我们希望在不使用循环和/或条件的情况下打印单行中的n个星号。我们如何在java中做到这一点

好吧,这里有一个你可以使用的巧妙的小技巧

System.out.println(new String(new char[n]).replace("\0", "*"));
这个小片段的功劳归于user102008在


实际上,您是在使用具有[n]个索引的新字符数组创建一个新字符串。创建新数组而不指定值时,会给出默认值。默认字符是
'\0'
(空字符)。因此,通过在创建的字符串上使用
replace()
,您可以将该字符的所有实例(您已经指定的数量)替换为您喜欢的
char
/
字符串

好吧,这里有一个你可以使用的巧妙的小技巧

System.out.println(new String(new char[n]).replace("\0", "*"));
这个小片段的功劳归于user102008在


实际上,您是在使用具有[n]个索引的新字符数组创建一个新字符串。创建新数组而不指定值时,会给出默认值。默认字符是
'\0'
(空字符)。因此,通过在创建的字符串上使用
replace()
,您可以将该字符的所有实例(您已经指定的数量)替换为您喜欢的
char
/
字符串

好吧,这里有一个你可以使用的巧妙的小技巧

System.out.println(new String(new char[n]).replace("\0", "*"));
这个小片段的功劳归于user102008在


实际上,您是在使用具有[n]个索引的新字符数组创建一个新字符串。创建新数组而不指定值时,会给出默认值。默认字符是
'\0'
(空字符)。因此,通过在创建的字符串上使用
replace()
,您可以将该字符的所有实例(您已经指定的数量)替换为您喜欢的
char
/
字符串

好吧,这里有一个你可以使用的巧妙的小技巧

System.out.println(new String(new char[n]).replace("\0", "*"));
这个小片段的功劳归于user102008在


实际上,您是在使用具有[n]个索引的新字符数组创建一个新字符串。创建新数组而不指定值时,会给出默认值。默认字符是
'\0'
(空字符)。因此,通过在创建的字符串上使用
replace()
,您可以将该字符的所有实例(您已经指定的数量)替换为您喜欢的
char
/
字符串

您可以使用递归打印带有以下代码的星号:

public class RecursiveStars {

    public static void main(final String[] args) {
        printStar(5);
    }

    /**
     * 
     * @param i
     *            the number of stars to print
     */
    private static void printStar(final int i) {
        if (i > 0) {
            System.out.print('*');
            printStar(i - 1);
        }
    }

}
如果您想避免这种情况,您仍然可以使用递归,但可以通过触发算术异常来中断循环。(这很可怕,但确实符合您的要求。)


您可以使用递归打印带有以下代码的星号:

public class RecursiveStars {

    public static void main(final String[] args) {
        printStar(5);
    }

    /**
     * 
     * @param i
     *            the number of stars to print
     */
    private static void printStar(final int i) {
        if (i > 0) {
            System.out.print('*');
            printStar(i - 1);
        }
    }

}
如果您想避免这种情况,您仍然可以使用递归,但可以通过触发算术异常来中断循环。(这很可怕,但确实符合您的要求。)


您可以使用递归打印带有以下代码的星号:

public class RecursiveStars {

    public static void main(final String[] args) {
        printStar(5);
    }

    /**
     * 
     * @param i
     *            the number of stars to print
     */
    private static void printStar(final int i) {
        if (i > 0) {
            System.out.print('*');
            printStar(i - 1);
        }
    }

}
如果您想避免这种情况,您仍然可以使用递归,但可以通过触发算术异常来中断循环。(这很可怕,但确实符合您的要求。)


您可以使用递归打印带有以下代码的星号:

public class RecursiveStars {

    public static void main(final String[] args) {
        printStar(5);
    }

    /**
     * 
     * @param i
     *            the number of stars to print
     */
    private static void printStar(final int i) {
        if (i > 0) {
            System.out.print('*');
            printStar(i - 1);
        }
    }

}
如果您想避免这种情况,您仍然可以使用递归,但可以通过触发算术异常来中断循环。(这很可怕,但确实符合您的要求。)



通过复制副本来回答有什么意义?@s.bandara-他们想知道,否则他们可能找不到。如果我没有赞扬它的创建者,你会给它打分吗?因为这可能与家庭作业有关,我会投反对票,要么是因为它对OP没有帮助,要么是(在code golf.SE之外)。@MichaelT-这到底是怎么回事?它在一行中完全符合他们的要求,简洁易懂,几乎没有开销。根据你刚才链接的定义,它实际上与代码跟踪相反。你@RudiKershaw我知道了。通过复制来回答有什么意义?@s.bandara-他们想知道,否则他们可能找不到。如果我没有赞扬它的创建者,你会给它打分吗?因为这可能与家庭作业有关,我会投反对票,要么是因为它对OP没有帮助,要么是(在code golf.SE之外)。@MichaelT-这到底是怎么回事?它在一行中完全符合他们的要求,简洁易懂,几乎没有开销。根据你刚才链接的定义,它实际上与代码跟踪相反。你@RudiKershaw我知道了。通过复制来回答有什么意义?@s.bandara-他们想知道,否则他们可能找不到。如果我没有赞扬它的创建者,你会给它打分吗?因为这可能与家庭作业有关,我会投反对票,要么是因为它对OP没有帮助,要么是(在code golf.SE之外)。@MichaelT-这到底是怎么回事?它在一行中完全符合他们的要求,简洁易懂,几乎没有开销。根据你刚才链接的定义,它实际上与代码跟踪相反。你@RudiKershaw我知道了。通过复制来回答有什么意义?@s.bandara-他们想知道,否则他们可能找不到。如果我没有赞扬它的创建者,你会给它打分吗?因为这可能与家庭作业有关,我会投反对票,要么是因为它对OP没有帮助,要么是(在code golf.SE之外)。@MichaelT-这到底是怎么回事?它在一行中完全符合他们的要求,简洁易懂,几乎没有开销。根据您刚才链接的定义,它实际上与代码跟踪相反。您@RudiKershaw我得到了它。您包括条件+1作为例外解决方案:D@T8Z我添加了一个修饰符