我遇到的第一个java难题——打印菱形

我遇到的第一个JAVA难题——打印菱形@TOC

#关于我

我是一名在校生,今年大四刚刚毕业,本科非计算机专业,即将在本校读研究生(当然也不是计算机专业,虽然很想读计算机专业哈哈)。我是暑假开始学习java,距今应该有10天了。这几天主要是学习了JAVASE部分的基础知识,昨天学到了循环结构,一道打印菱形的题目困扰了我一个小时,在朋友帮助下终于搞懂了,现在分享出来记录我学习JAVA的历程,希望一年以后再回来看看最初的我能够有一丝丝欣慰。

打印实心菱形

package diamond;

import java.util.Scanner;

public class diamond {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	Scanner in=new Scanner(System.in);
	final int n=in.nextInt();
	//供用户输入n值,这里的n值可以理解为你想要多大的菱形,菱形的层数为2*n-1层。
	
	for(int i=1;i<=n;i++) {
		for(int j=1;j<=n-i;j++) {
			System.out.print(" ");
		}
		//i变量控制层数,j变量控制第一个星号出现的位置
		for(int k=1;k<=2*i-1;k++) {
			System.out.print("*");
		}
		//k变量控制在第n层中星号出现的个数;
		System.out.println();
	}
	//这个for循环是控制1至n层的正三角形的输出;(把菱形分为两个三角形)
	
	for(int i=1;i<=n-1;i++) {
		for(int j=n-1;j>=n-i;j--) {
			System.out.print(" ");
		}
		for(int k=2*n-3;k>=2*i-1;k--) {
			System.out.print("*");
		}
		System.out.println();
	}
	//这个for循环控制的是下三角形的输出;两个三角形拼起来就形成了菱形。其中j,k两个变量控制的东西与上一个for循环一样,值得注意的是这个三角形比上三角形少一层,即n-1层
}

}
实心

打印空心菱形

package diamond;

import java.util.Scanner;

public class hollow {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	Scanner in=new Scanner(System.in);
	final int n=in.nextInt();
	//供用户输入n值,这里的n值可以理解为你想要多大的菱形,菱形的层数为2*n-1层。
	
	for(int i=1;i<=n;i++) {
		for(int j=1;j<=n-i;j++) {
			System.out.print(" ");
		}
		//i变量控制层数,j变量控制第一个星号出现的位置
		for(int k=1;k<=2*i-1;k++) {
			if(k==2*i-1||k==1) 
			System.out.print("*");
			else 
				System.out.print(" "); 
			
		}
		//加入一个If判断只在最开始和最后输出星号
		System.out.println();
	}
	for(int i=1;i<=n-1;i++) {
		for(int j=n-1;j>=n-i;j--) {
			System.out.print(" ");
		}
		for(int k=2*n-3;k>=2*i-1;k--) {
			if(k==2*n-3||k==2*i-1) 
			System.out.print("*");
			else
				System.out.print(" ");
		}
		//同上
		System.out.println();
	}
	
}

}

效果图希望我能定时记录我学习的过程。一起加油吧!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值