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