在Java中用用户输入和空格编码这个金字塔模式?
我对编码完全不熟悉,我的老师在解释方面很糟糕。我不知道课堂上发生了什么,我真的需要帮助! 我以前做过很多金字塔图案,但这个我不知道 我也知道如何获得用户输入,但我只需要帮助理解为什么这不起作用。他简要地向我们解释了如何编写这个问题的代码,但无论我更改并尝试了多少次,它都不起作用 我必须使用用户输入的行数创建一个金字塔。因此,如果用户输入了5,它应该是这样的:在Java中用用户输入和空格编码这个金字塔模式?,java,loops,for-loop,nested-loops,Java,Loops,For Loop,Nested Loops,我对编码完全不熟悉,我的老师在解释方面很糟糕。我不知道课堂上发生了什么,我真的需要帮助! 我以前做过很多金字塔图案,但这个我不知道 我也知道如何获得用户输入,但我只需要帮助理解为什么这不起作用。他简要地向我们解释了如何编写这个问题的代码,但无论我更改并尝试了多少次,它都不起作用 我必须使用用户输入的行数创建一个金字塔。因此,如果用户输入了5,它应该是这样的: * ** *** **** ***** 所以第一行的空格数是四,第二行有三个空格,依此类推,直到0 这是给出完全不准
*
**
***
****
*****
所以第一行的空格数是四,第二行有三个空格,依此类推,直到0
这是给出完全不准确输出的代码:
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++;
}
请帮忙!我觉得自己很愚蠢 非常接近,大部分for循环是错误的
for(initialization;condition;increment)
for循环仅在条件为true时执行。在你的情况下,这些条件真的没有意义。试着改变它。你的计数器和我也是一样的:基本上是正确的,但是你从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++;
}
我怀疑你的老师会接受这个。但这只是为了好玩的一句台词
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"))));
有趣的编码练习。正如其他人指出的那样,你几乎是对的。 有上百种方法可以解决这个问题 这里只是一个保存循环的变体
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();
}
使用单个显式循环的另一个解决方案:
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开始,因为这样的变量可以用作数组/列表索引。但是,在这种情况下,没有相关的数组或列表,因此将sarting设置为1可以简化逻辑。我也做过类似的工作,这就是我所做的,您可以尝试一下。它接受用户输入并显示空格和
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();
}
非常感谢。我不敢相信这件事竟如此微不足道。你帮了我大忙,我无缘无故地紧张。
#
##
###
####
#####
######