我是编码的新手,我的老师在解释事物方面很糟糕。我不知道这堂课是怎么回事,我真的需要这方面的帮助! 我以前做过很多金字塔图案,但这是我不知道的一种。
我也知道如何获得用户输入,但是我只需要帮助了解为什么这行不通。他向我们简要说明了如何编写此问题的代码,但是无论我进行多少次尝试尝试,它都无法正常工作。
我必须使用用户输入的行数创建一个金字塔。因此,如果用户输入5,则应该是这样:
*
**
***
****
*****
因此,第一行上的空格数为4,第二行上的空格数为3,依此类推,直到达到零为止。
这是代码(给出的输出完全不准确):
System.out.print("\f");
System.out.println("Enter a valid number between 1 and 20.");
int num = 0;
int counter = 1;
num = keyNum.nextInt();
for (int i = 1; i == num; i++)
{
for (int j = 1; j == (num -= counter); j++)
{
System.out.print(" ");
}
for (int k = 1; k == counter; k++)
{
System.out.print("*");
}
System.out.println("");
counter++;
}
请帮助!我真傻
答案 0 :(得分:1)
我怀疑您的老师会接受这一点。但这只是一个有趣的班轮
int num = 20;
IntStream.range(0, num).forEach(i -> System.out.println(String.format("%" + num + "s", new String(new char[i+1]).replace("\0", "x"))));
答案 1 :(得分:0)
它非常接近,大多数for循环是错误的。
for(initialization;condition;increment)
for循环仅在条件为true时执行。在您的情况下,条件真的没有意义。尝试更改它。你的柜台和我也是同一件事:)
答案 2 :(得分:0)
这基本上是正确的,但是您是从1开始循环,但实际上它们应该是从0开始,并且for循环中的条件不应包含==
,它只会使其运行一次。
for (int i = 0; i < num; i++) {
for (int j = 0; j <= (num - counter); j++) {
System.out.print(" ");
}
for (int k = 0; k < counter; k++) {
System.out.print("*");
}
System.out.println("");
counter++;
}
答案 3 :(得分:0)
有趣的编码练习。正如其他人指出的,您几乎正确。 解决问题有一百种方法。
这只是一个保存循环的变体...
int lines=5;
for (int i=0; i<lines; i++) {
for (int k=0; k<lines; k++) {
System.out.print( (k < lines - i - 1) ? " " : "*");
}
System.out.println();
}
答案 4 :(得分:0)
使用单个(显式)循环的另一种解决方案:
for (int i = 1; i <= num; i++) {
int expectedSpaces = num - i;
String spaces = repeat(" ", expectedSpaces);
String asterisks = repeat("*", i);
System.out.println(spaces + asterisks);
}
}
private static final String repeat(String toBeRepeated, int length) {
return new String(new char[length]).replace("\0", toBeRepeated);
}
如其他地方所述,诸如i
之类的循环变量通常从0开始,因为此类变量可用作数组/列表索引。但是,在这种情况下,没有相关的数组或列表,因此将Sart设置为1可简化逻辑。
答案 5 :(得分:0)
我做了类似的工作,这就是我所做的,您可以尝试一下。它需要用户输入并显示空格和“#” ...
int size = n;
for (int i = 0; i <= size-1; i++){
for(int j = size -1; j > i; j-){
System.out.print(" ");
}
for(int j = 0; j <= i; j++){
System.out.print("#");
}
System.out.println();
}
输出为:
#
##
###
####
#####
######