我对编程和Java很陌生。我需要针对宽度和高度参数打印一个星号和点三角形。
到目前为止,我只能用一个参数(高度)打印星号三角形。 (假设给函数6作为参数)
这是我的代码:
public static void main(String[] args)
{
for(int i=0; i<6; i++)
{
for(int j=6; j>=i; j--)
{
System.out.print(".");
}
for(int x=0; x<=(2*i); x++)
{
System.out.print("*");
}
for(int k=6; k>=i; k--)
{
System.out.print(".");
}
System.out.print("\n");
}
}
我想给函数两个参数(宽度和高度)。但是,我无法管理添加第二个参数。
预期输出为(使用宽度-11-和高度-8-参数):
triangle 11 8
.....*.....
....**.....
...****....
...*****...
..******...
.********..
.*********.
***********
但是,我得到以下输出(带有一个仅高度为-6-的参数):
triangle 6
.......*.......
......***......
.....*****.....
....*******....
...*********...
..***********..
能帮我吗?如何在函数中添加第二个参数并解决问题? 非常感谢你!
答案 0 :(得分:0)
您的代码执行的某些操作与您的示例不匹配。
首先,您根本没有使用参数。您说要假设6作为参数传递给您的main方法,但我所看到的只是代码中的硬编码6。您应该调用args [0]和args [1]来使用两个参数。
第二,如果要获得示例中提供的参数给出的结果,则循环逻辑关闭。您的外循环适用于行数,但是内循环不能正确构建单独的行。这里最棘手的部分是每行的内容都需要考虑宽度与高度的比率。
这是一个应解决这两个问题的示例:
public static void main(String[] args) {
int width = Integer.parseInt(args[0]);
int height = Integer.parseInt(args[1]);
for(int i=0; i<height; i++) {
int starsThisLine = (int) Math.round(width * ((i+1) / (double) height));
int dotsBeforeStars = (int) Math.round((width - starsThisLine) / 2.0);
for(int j=0; j<width; j++)
{
if (j < dotsBeforeStars)
System.out.print(".");
} else if (j < dotsBeforeStars + starsThisLine) {
System.out.print("*");
} else {
System.out.print(".");
}
}
System.out.print("\n");
}
}
请注意,这可能无法完全打印出结果,但看起来应该足够接近。如果需要精确,可能需要稍微调整比例。