我遇到的第一个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();
}
}
}
希望我能定时记录我学习的过程。一起加油吧!