打印实心菱形
思想:把实心菱形看出两部分,一部分是由一个正三角形构成,一部分由一个倒三角构成
法一:
import java.util.Scanner;
public class M {
public static void drawDiamond(int size) {
// *
// ***
// *****
for (int i = 1; i <= size; i++) {
for (int j = 1; j <= size - i + 1; j++) {
System.out.print(" ");
}
for (int j = 1; j <= 2 * i - 1; j++) {
System.out.print("*");
}
System.out.println();
}
}
// 倒三角
public static void drawDiamond1(int size) {
// ***
// *
for (int i = size; i >= 1; i--) {
for (int j = size - i; j >= 1; j--) {
System.out.print(" ");
}
for (int j = 2 * i - 1; j >= 1; j--) {
System.out.print("*");
}
System.out.println();
}
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
// 打印实心
Scanner in = new Scanner(System.in);
System.out.println("因为菱形的特殊性质,所以请输入奇数:");
int size = in.nextInt();// 菱形的高度
drawDiamond(size / 2);
// System.out.println("---------------------");
drawDiamond1(size / 2 + 1);
}
}
空心菱形
在实心菱形的基础上,把每一行看出两部分,一部分是开始打印*之前的空格,一部分是打印*以及空格
简单一点的:
import java.util.Scanner;
public class L {
public static void drawDiamond(int size) {
// *
// * *
// *
for (int i = 1; i <= size; i++) {
for (int j = 1; j <= size - i + 1; j++) {
System.out.print(" ");
}
for (int j = 1; j <= 2 * i - 1; j++) {
if (j == 1 || j == 2 * i - 1) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println();
}
}
// 倒三角
public static void drawDiamond1(int size) {
for (int i = size; i >= 1; i--) {
for (int j = size - i; j >= 1; j--) {
System.out.print(" ");
}
for (int j = 2 * i - 1; j >= 1; j--) {
if (j == 1 || j == 2 * i - 1) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println();
}
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
// 打印实心
Scanner in = new Scanner(System.in);
System.out.println("因为菱形的特殊性质,所以请输入奇数:");
int size = in.nextInt();// 菱形的高度
drawDiamond(size / 2);
// System.out.println("---------------------");
drawDiamond1(size / 2 + 1);
}
}
稍微缩短一点代码
public class L {
public static void drawDiamond(int size) {
// *
// * *
// *
for (int i = 1; i <= size; i++) {
for (int j = 1; j <= 2 * i + size - i; j++) {
if (j == 1 + size - i + 1 || j == 2 * i + size - i) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println();
}
}
// 倒三角
public static void drawDiamond1(int size) {
for (int i = size; i >= 1; i--) {
for (int j = 1; j <= 2 * i - 1 + size - i; j++) {
// 前 size - i个循环中,(j==1||j==2*i-1)不会被触发
if (j == 1 + size - i || j == 2 * i - 1 + size - i)
System.out.print("*");
else
System.out.print(" ");
}
System.out.println();
}
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
// 打印实心
Scanner in = new Scanner(System.in);
System.out.println("因为菱形的特殊性质,所以请输入奇数:");
int size = in.nextInt();// 菱形的高度
drawDiamond(size / 2);
// System.out.println("---------------------");
drawDiamond1(size / 2 + 1);
}
}
其余的方法:
import java.util.Scanner;
public class L {
// * i, size left = right = size / 2 + 1
// * * left-- right++ while i < size / 2 + 1
//* * i == size / 2 + 1 left++ right--
// * *
// *
//空心
public static void drawdiamond(int size) {
int left=size/2+1,right=size/2+1, dir = 1;
for(int i=1;i<=size;i++){
for(int j=1;j<=size;j++){
if(j ==left || j == right){
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println();
if (i == size / 2 + 1)
dir = -1;
left = left - dir;
right = right + dir;
}
}
//实心
public static void drawdiamond1(int size) {
int left=size/2+1,right=size/2+1, dir = 1;
for(int i=1;i<=size;i++){
for(int j=1;j<=size;j++){
if(j >=left && j <= right){
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println();
if (i == size / 2 + 1)
dir = -1;
left = left - dir;
right = right + dir;
}
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
// 打印实心
Scanner in = new Scanner(System.in);
System.out.println("因为菱形的特殊性质,所以请输入奇数:");
int size = in.nextInt();// 菱形的高度
drawdiamond(size);
drawdiamond1(size);
}
}