[英]How do I print out an hourglass using asterisks?
对于家庭作业,我正在尝试构建一个程序,该程序使用星号和空格将沙漏形状打印到屏幕上。 我写了下面的程序,但它的输出看起来不像沙漏。 谁能帮助我理解为什么我的程序没有产生预期的输出?
public class hourglass {
public static void main(String[] args) {
int x = Integer.parseInt(args[0]);
int k = 2 * x - 1;
int c = k;
for (int j = x; j > 0; j--) {
for (int f = j; f <= k; f++) {
System.out.print("*");
}
for (int o = 1; o <= c; o++) {
if (k % 2 == 0) System.out.print(" ");
else System.out.print(" ");
}
System.out.print("\n");
}
}
}
编辑:我现在重新编写了程序,它只是打印到无穷大和更远的地方,我理解我需要接收 ax 编号然后运行 for 循环的逻辑,每次我通过它时,我都会从 x 开始 -1。 任何人都可以帮我解决这个问题吗? 我只是想加深我对 Java 的理解。
public class hourglass
{
public static void main(String[] args)
{
int valueIn = Integer.parseInt(args[0]);
int maxVALUE = 2*valueIn ;
for( int i = 0 ; (valueIn - 1) > i; i--)
{for( int j =1 ; j < maxVALUE; i++)
{
System.out.print("*");}
for (int o = 1; o < maxVALUE; o++) {
if (maxVALUE % 2 == 0) System.out.print(" ");
else System.out.print(" ");
}
System.out.print("\n");
}
}
}
编辑 2* 如果有人看到这个,我就走了。 在过去的 8 个小时里,我自己构建了一个代码,现在我卡住了,我不知道如何“反转”我的 for 循环以使其打印到另一个方向,这是我的代码,我不知道不知道该怎么做,如果有人能给我任何关于如何做到这一点的见解,我会很高兴,我尝试做一个 if case if(i == 0) 但从未发生过,我什至尝试使 if case = =1; 但随后循环永远运行。 关于如何完成我的程序的任何指示?
public class mathrandom
{
public static void main ( String [] args)
{
int valueIn = Integer.parseInt(args[0]);
for ( int i = valueIn; 1 <= i; i--){
for ( int k = i ; k < 2*valueIn -1; k++)
{System.out.print(" ");}
{for ( int j = 1; j <= (i*2)-1; j++)
{
System.out. print("*");
}
System.out.println();
}
}
}}
如果您不考虑代码(新手会怎么做?),您可以尝试先写一篇散文(-ish)描述您的程序将如何执行其任务,然后编写与散文相匹配的代码。 例如,您可以从以下内容开始:
给定一个表示沙漏形状宽度的输入
x
,将沙漏作为一系列包含星号和空格的行打印到屏幕上。 每行上的星号数将从x
开始,每行递减两个,直到包含少于两个星号的行,然后每行递增两个,直到再次到达x
。 将在每行上打印适当数量的前导空格,以使该行相对于其他行的星号运行居中(假设空格以与星号相同的宽度显示)。
您甚至可以将其作为注释放入源代码中。 事实上,它可以帮助将其分解为几个较小的注释,以便您可以使用与该想法特定对应的代码来遵循每个逻辑思想。 如果你这样做,那么它不仅可以帮助你组织代码,而且你最终会得到一个记录良好的程序,而无需任何额外的努力。
如果您将我的散文与您的程序进行比较,您应该会看到相同点和不同点。 您的程序执行某种倒计时,在每一步打印零个或多个空格字符、一些星号,然后换行以结束该行。 这些基本上是它应该做的事情,但细节是错误的。 事实上,错误够多而且够奇怪,我倾向于怀疑该程序更多地来自外部来源,而不是经过深思熟虑的从头构建。 我建议您从这里开始专注于自己编写程序。 事实上,考虑先扔掉main()
所有内容,除了int x = Integer.parseInt(args[0]);
.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.