首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我怎么才能打印图案而不填充里面呢?

我怎么才能打印图案而不填充里面呢?
EN

Stack Overflow用户
提问于 2020-05-03 23:56:12
回答 1查看 45关注 0票数 0

我想用java打印一个像这样的蝶形图:

代码语言:javascript
复制
*     *
**   **
* * * *
* *** *
* * * *
**   **
*     *

但是,如果为n=4,则下面的代码将打印此模式:

代码语言:javascript
复制
*     *
**   **
*** ***
*******
*** ***
**   **
*     *

我怎么才能在不打印的情况下打印蝶形呢?我从http://solvedpatterns.blogspot.com/2016/07/ButterFly.html获取了这段源代码

代码语言:javascript
复制
import java.util.Scanner;
public class Soru2 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("Enter n value");
        int n=sc.nextInt();
        int sp=2*n-1;
        int st=0;
        for(int i=1;i<=2*n-1;i++){
            if(i<=n){
                sp=sp-2;
                st++;
            }
            else{
                sp=sp+2;
                st--;
            }
            for(int j=1;j<=st;j++){
                System.out.print("*");
            }
            for(int k=1;k<=sp;k++){
                System.out.print(" ");
            }
            for(int l=1;l<=st;l++){
                if(l!=n)
                    System.out.print("*");
            }
            System.out.println();
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-04 00:29:55

在打印非边框位置时,需要跳过打印*

代码语言:javascript
复制
package com.practice;

import java.util.Scanner;
public class Soru2 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("Enter n value");
        int n=sc.nextInt();
        int sp=2*n-1;
        int st=0;
        for(int i=1;i<=2*n-1;i++){
            if(i<=n){
                sp=sp-2;
                st++;
            }
            else{
                sp=sp+2;
                st--;
            }
            for(int j=1;j<=st;j++){
                if(j==1 || j==st || (((j+1)==st) && i==n)) // add this
                    System.out.print("*");
                else // add this
                    System.out.print(" ");
            }
            for(int k=1;k<=sp;k++){
                System.out.print(" ");
            }
            for(int l=1;l<=st;l++){
                if(l==1 || l==st || (((l-1)==st) && i==n)) { // add this
                    if (l != n)
                        System.out.print("*");
                }
                else // add this
                    System.out.print(" ");
            }
            System.out.println();
        }
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61577451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档