Java 爪哇钻石星号的高度
如何使此代码正确显示高度?因此,如果钻石星号的宽度是3,高度是5,那么钻石看起来就像这样Java 爪哇钻石星号的高度,java,for-loop,height,width,Java,For Loop,Height,Width,如何使此代码正确显示高度?因此,如果钻石星号的宽度是3,高度是5,那么钻石看起来就像这样 * *** *** *** * 它只是在中间增加了多余的高度。这是到目前为止我的代码。它可以做的宽度刚刚好 public static void main(String[] args) { int width, height, heightT; Scanner scan = new Scanner(System.in); while(t
*
***
***
***
*
它只是在中间增加了多余的高度。这是到目前为止我的代码。它可以做的宽度刚刚好
public static void main(String[] args) {
int width, height, heightT;
Scanner scan = new Scanner(System.in);
while(true) {
System.out.println("Enter width of diamond (odd number between 0-19): ");
width = scan.nextInt();
if (width % 2 != 0) {
if (0 <= width && width <= 19) {
break;
}
}
}
while(true) {
System.out.println("Enter height of diamond (greater than or equal to width): ");
height = scan.nextInt();
if(height >= width) {
heightT = height - width;
break;
}
}
for(int i = 1; i < width + 1; i += 2) {
for(int j = 0; j < 9 - i / 2; j++)
System.out.print(" ");
for(int j = 0; j < i; j++)
System.out.print("*");
System.out.print("\n");
}
for(int i = width - 2; i > 0; i -= 2) {
for(int j = 0; j < 9 - i / 2; j++)
System.out.print(" ");
for(int j = 0; j < i; j++)
System.out.print("*");
System.out.print("\n");
}
}
publicstaticvoidmain(字符串[]args){
内部宽度、高度、高度;
扫描仪扫描=新扫描仪(System.in);
while(true){
System.out.println(“输入菱形宽度(0-19之间的奇数):”;
宽度=scan.nextInt();
如果(宽度%2!=0){
如果(0;i-=2){
对于(int j=0;j<9-i/2;j++)
系统输出打印(“”);
对于(int j=0;j
在解决此类逻辑时,您必须始终关注您知道的永远不会改变的事情。在这种情况下,3件事情永远不会改变:
1.第一行。始终等于一个星号
2.中间线。始终等于星号宽度
3.最后一行。始终等于一个星号
现在,将中间一行的钻石一分为二。请注意,总高度将始终是顶部(或底部)的高度乘以2加1(中间一行)。您得到的结果更少:
for(int i = 0; ((i*2)+1) <= height; i++){
//Print top
}
// Print middle row outside of loops or inside if you must.
for(int i = 0; ((i*2)+1) <= height; i++){
//Print bottom.
}
在解决这类逻辑时,你必须始终关注那些你知道永远不会改变的事情。在这种情况下,3件事情永远不会改变: 1.第一行。始终等于一个星号 2.中间线。始终等于星号宽度 3.最后一行。始终等于一个星号 现在,将中间一行的钻石一分为二。请注意,总高度将始终是顶部(或底部)的高度乘以2加1(中间一行)。您得到的结果更少:
for(int i = 0; ((i*2)+1) <= height; i++){
//Print top
}
// Print middle row outside of loops or inside if you must.
for(int i = 0; ((i*2)+1) <= height; i++){
//Print bottom.
}
您可以计算高度和宽度之间的差异,并在while循环中重用您的逻辑
for(int i = 1; i < width + 1; i += 2) {
for(int j = 0; j < 9 - i / 2; j++)
System.out.print(" ");
for(int j = 0; j < i; j++)
System.out.print("*");
System.out.print("\n");
}
int dif = height-width;
while(dif !=0){
for(int i = width; i < width + 1; i += 2) {
for(int j = 0; j < 9 - i / 2; j++)
System.out.print(" ");
for(int j = 0; j < i; j++)
System.out.print("*");
System.out.print("\n");
}
dif--;
}
for(int i = width - 2; i > 0; i -= 2) {
for(int j = 0; j < 9 - i / 2; j++)
System.out.print(" ");
for(int j = 0; j < i; j++)
System.out.print("*");
System.out.print("\n");
}
for(int i=1;i0;i-=2){
对于(int j=0;j<9-i/2;j++)
系统输出打印(“”);
对于(int j=0;j
您可以计算高度和宽度之间的差异,并在while循环中重用您的逻辑
for(int i = 1; i < width + 1; i += 2) {
for(int j = 0; j < 9 - i / 2; j++)
System.out.print(" ");
for(int j = 0; j < i; j++)
System.out.print("*");
System.out.print("\n");
}
int dif = height-width;
while(dif !=0){
for(int i = width; i < width + 1; i += 2) {
for(int j = 0; j < 9 - i / 2; j++)
System.out.print(" ");
for(int j = 0; j < i; j++)
System.out.print("*");
System.out.print("\n");
}
dif--;
}
for(int i = width - 2; i > 0; i -= 2) {
for(int j = 0; j < 9 - i / 2; j++)
System.out.print(" ");
for(int j = 0; j < i; j++)
System.out.print("*");
System.out.print("\n");
}
for(int i=1;i0;i-=2){
对于(int j=0;j<9-i/2;j++)
系统输出打印(“”);
对于(int j=0;j
直接指出问题很好。那么这是否意味着我做得正确,或者我应该突出显示代码中无法获得的部分?@ssh当您输入3和5时,您的输出是什么样子?@Alexander我的输出是基本菱形,高度函数根本没有使用,这就是我需要帮助的地方。要在其中建立逻辑,好的,让我来从我的一份关于制作钻石的作业中找出一些旧代码。直接指出问题很好。这是否意味着我做得正确,或者我应该突出显示代码中无法获得的部分?@ssh当你输入3和5时,你的输出是什么样子?@Alexander我的输出是一个基本的钻石,高度函数还没有使用,tha这就是我需要帮助的地方。为了让它符合逻辑。好吧,让我从我做钻石的作业中找出一些旧代码。我仍然很困惑。我应该在顶部、底部和中间填充什么portion@Armdev另一个for循环用于打印星号。这些for循环用于处理每一行,以“跟踪”需要打印的行数(哪个是高度限制).你能把代码给我吗?我的大脑现在简直是一片空白。或者用我的部分代码来实现?@Armdev我没有忘记你。我仍然很困惑。我应该在顶部、底部和中间填充什么portion@Armdev另一个for循环用于打印星号。这些for循环用于处理每行以“跟踪”我们需要打印多少(这是高度限制)。你能给我代码吗?我的大脑现在简直是一片空白。或者用我的部分代码来实现?@Armdev我没有忘记你。