實心菱形
輸入一個正整數M(1<=M<=25),表示菱形的半徑(直徑就是2*M+1)
輸出以M爲半徑的菱形(如圖)
代碼如下
public static void main(String[] args) {
Scanner s= new Scanner (System.in);
int M =s.nextInt();
// 上半層
for(int i =0;i<M+1;i++) { //i表示層數
for(int j=0;j<(M-i);j++) {
System.out.print(' ');
}
for(int k =0;k<2*i+1;k++) {
System.out.print('*');
}
System.out.println();
}
// 下半層
for(int i =0;i<M;i++) {
for(int j=0;j<i+1;j++) {
System.out.print(' ');
}
int k =0;
for(int j =0;j<2*(M-i)-1;j++) {
System.out.print('*');
}
System.out.println();
}
}
將菱形分成上下兩部分,可以看成兩個三角形。用一個for循環來不斷地遍歷三角形的每一行,每一行中首先是空格的輸出,然後是*的輸出,每次找處空格和*的規律即可。
空心菱形
public static void main(String[] args) {
Scanner s= new Scanner (System.in);
int M =s.nextInt();
// 上半層
for(int i =0;i<M+1;i++) { //i表示層數
for(int j=0;j<(M-i);j++) {
System.out.print(' ');
}
System.out.print('*');
for(int k =0;k<2*i-1;k++) {
System.out.print(' ');
}
if(i!=0)
System.out.print('*');
System.out.println();
}
// 下半層
for(int i =0;i<M;i++) {
for(int j=0;j<i+1;j++) {
System.out.print(' ');
}
int k =0;
System.out.print('*');
for(int j =0;j<2*(M-i-1)-1;j++) {
System.out.print(' ');
}
if(i!=M-1) {
System.out.print('*');
}
System.out.println();
}
}
還是將菱形分爲上下兩部分,每一行先打印空格,然後打印一個*,然後在打印空格,然後在打印一個*。找出空格的打印規律即可。
字母菱形
打印如圖所示的菱形,最外一層是A,接着是B依次類推。。。。
public static void main(String[] args) {
Scanner s= new Scanner (System.in);
int M =s.nextInt();
// 上半層
for(int i =0;i<M+1;i++) { //i表示層數
for(int j=0;j<(M-i);j++) {
System.out.print(' ');
}
int k=0;
for(int j=0;j<(i+1);j++) {
System.out.print((char)('A'+k));
k++;
}
k--;
for(int j=0;j<(i+1)-1;j++) {
k--;
System.out.print((char)('A'+k));
}
System.out.println();
}
// 下半層
for(int i =0;i<M;i++) {
for(int j=0;j<i+1;j++) {
System.out.print(' ');
}
int k =0;
for(int j=0;j<(M-i);j++) {
System.out.print((char)('A'+k));
k++;
}
k--;
for(int j=0;j<(M-i)-1;j++) {
k--;
System.out.print((char)('A'+k));
}
System.out.println();
}
}
還是將菱形分爲上下兩部分,每一行中,先打印空格,然後打印字母,先是字母的遞增,然後遞減。只要將上面的空心菱形和實心菱形理解明白之後,就會很容易的理解這個,大家加油! 有任何疑問可以評論。