Java 使用for循环构建三角形
Java 使用for循环构建三角形,java,Java,buildtlumb(int height)方法将采用一个整数参数,该参数表示为纪念法老而建造的金字塔的高度。此方法将打印出金字塔的表示,如下面的示例所示 范例: Pharaoh p2 = new Pharaoh(“Rameses”, 7); p2.buildTomb(5); * *** ***** ******* ********* 例如: Pharaoh p3 = new Pharaoh(“Jim”, 3); p3.buildTomb(
buildtlumb(int height)
方法将采用一个整数参数,该参数表示为纪念法老而建造的金字塔的高度。此方法将打印出金字塔的表示,如下面的示例所示
范例:
Pharaoh p2 = new Pharaoh(“Rameses”, 7);
p2.buildTomb(5);
*
***
*****
*******
*********
例如:
Pharaoh p3 = new Pharaoh(“Jim”, 3);
p3.buildTomb(3);
*
***
*****
Pharaoh p4 = new Pharaoh(“Pickle”, 3);
p4.buildTomb(1);
*
***
例如:
Pharaoh p3 = new Pharaoh(“Jim”, 3);
p3.buildTomb(3);
*
***
*****
Pharaoh p4 = new Pharaoh(“Pickle”, 3);
p4.buildTomb(1);
*
***
我无法得到这些结果,这是我已经拥有的代码
/**
* Write a description of class Pharaoh here.
*
*/
public class Pharaoh
{
private String name;
private int greatness;
public Pharaoh(String n, int g)
{
name = n;
greatness = g;
}
public void buildTomb( int height)
{
if(height > greatness)
System.out.println("(PEASANT REVOLT)");
if(height <= 2)
height = 2;
if(height >= 2 && height <= greatness)
{
int x = height;
for(int m = 0; m < 2 * x - 1; m++) //for upper star
System.out.print(" ");
System.out.println("*");
for(int j = 1; j <= x; j += 1)
{
for(int i = 1; i <= x - j; i += 1)
System.out.print(" ");
for(int k = 1; k <= 2 * j; k += 1)
System.out.print("* ");
System.out.println();
}
System.out.println( name + " 's TOMB ");
}
}
}
/**
*在这里写一篇关于类的描述。
*
*/
公务舱
{
私有字符串名称;
私人的伟大;
公共字符串(字符串n,整数g)
{
name=n;
伟大=克;
}
公共建筑(内部高度)
{
如果(高度>伟大)
系统输出打印(“农民起义”);
如果(高度=2&&height使用函数划分问题。
对于此函数,您需要打印许多行。对于每一行,您需要知道两件事:要打印的空格数和要打印的星号数。在给定行号的情况下,编写一个函数来计算这些值
完成后,只需使用这些函数即可完成工作。如果您有bug,您会在查看结果时发现它们。尝试和错误会让您完成剩下的工作。所有行都应使用相同的代码打印。顶部/第一行没有什么特殊之处
首先,正如Riley Carney所提到的,您需要识别模式:
看到图案了吗?
Astericks:Top->1,Next->3,Next->5
Spaces:Top->4,Next->3,Next->2,Next->1
您有一个行循环(您的j
循环),从1
到height
(包括)计数
现在查看模式,看看是否可以计算这两个值
对于空格(缩进),底行有0个空格,上面的行比下面的行多1个。这意味着值从高度-1
向下到0
,或者换句话说:
spaces = height - row
stars = row * 2 - 1
对于星号(*
),最上面一行有一个星号,下面每一行有两个星号。这意味着值是1
,3
,5
,…,或者换句话说:
spaces = height - row
stars = row * 2 - 1
现在,打印时,只应打印单个空格,不应打印星号后的空格,因为您当前正在打印以下6行(!):
当您应该打印这5行时:
看到模式了吗?Astericks:Top->1,Next->3,Next->5
空格:Top->4,Next->3,Next->2,Next->1
我没能得到那些结果,你是什么意思?我的意思是我的输出不同好吧,我们不只是帮你回答作业,你想做的是修复你的代码产生正确的输出。