Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 爪哇钻石星号的高度_Java_For Loop_Height_Width - Fatal编程技术网

Java 爪哇钻石星号的高度

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

如何使此代码正确显示高度?因此,如果钻石星号的宽度是3,高度是5,那么钻石看起来就像这样

     *
    ***
    ***
    ***
     *
它只是在中间增加了多余的高度。这是到目前为止我的代码。它可以做的宽度刚刚好

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我没有忘记你。