无忆? 2021-02-19 12:11 采纳率: 100%
浏览 80
已采纳

菱形问题(java)

  • 写回答

2条回答 默认 最新

  • 羽落风起 2021-02-19 14:33
    关注

    由三部分构成:1、各层数需要* 数  2、输入数最大层数 3、绘制菱形

    public class Test {
    	
    	public static void main(String[] args) {
    		int num=88;
    		show(num);
    		
    	}
    	
    	/**
    	 * 层数判断
    	 * @param num
    	 */
    	public static void show(int num){
    		if(num<=0) {
    			System.out.println("剩余为:"+num);
    			return;
    		}
    		
    		int step=1;
    		int size=0;
    		while(true) {
    			size=layer(step);
    			if(num<size) {
    				step--;
    				break;
    			}
    			step++;
    		}
    		System.out.println("总层数:"+step+"剩余:"+(num-layer(step)));
    		draw(step);
    	}
    	
    	/**
    	 * 绘制菱形
    	 * @param layer
    	 */
    	public static void draw(int layer) {
    		int size=layer*2;
    		StringBuffer buf=new StringBuffer();
    		for(int i=1;i<size;i++) {
    			if(i<layer) {
    				for(int num=0;num<(layer-i);num++) {
    					buf.append(" ");
    				}
    				for(int num=0;num<i;num++) {
    					buf.append("*");
    				}
    				
    			}else if(i==layer){
    				for(int num=0;num<i;num++) {
    					buf.append("*");
    				}
    				
    			}else {
    				for(int num=0;num<(i-layer);num++) {
    					buf.append(" ");
    				}
    				for(int num=0;num<layer*2-i;num++) {
    					buf.append("*");
    				}
    			}
    			buf.append("\n");
    		}
    		System.out.println(buf.toString());
    	}
    		
    	/**
    	 * 各层需要数量
    	 * @param num
    	 * @return
    	 */
    	public static int layer(int num) {
    		int index=num;
    		int sum=0;
    		while(true) {
    			index--;
    			if(index<=0) {
    				break;
    			}
    			if(index==1) {
    				sum+=1;
    			}else {
    				sum+=index*2-1;
    			}
    			
    		}
    		sum=sum*2+num*2-1;
    		return sum;
    	}
    }

    代码非最有方案,还有优化空间。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 AT89C51控制8位八段数码管显示时钟。
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口