java打印菱形方法:
package circulationDemo
import java.util.Scanner
public class Test {
public static void main(String[] args) {
Scanner input = new Scanner(System.in)
System.out.println("请输入要打印的行数:")
int num = input.nextInt()
t1(num)// 正直角
split()
t2(num)// 倒直角
split()
t3(num)// 等腰三角
split()
t4(num)// 等腰倒三角++
split()
t5(num)// 等腰倒三角--
split()
t6(num)// 实心菱形
split()
t7(num)// 空心菱形(1)
split()
t8(num)// 空心菱形(2)
split()
t9(num)// 空心菱形(3)
}
private static void t9(int num) {
for (int k = 1 k <= num k++) {
for (int i = 1 i <= (num - k) i++) {
System.out.print(" ")
}
System.out.print("*")
for (int i = 1 i <= ((k - 2) * 2 + 1) i++) {
System.out.print(" ")
}
if (k != 1) {
System.out.print("*")
}
System.out.println()
}
for (int k = num-1 k >= 1 k--) {
for (int i = 1 i 迅首携<= (num - k) i++) {
System.out.print(" ")
}
System.out.print("*")
for (int i = 1 i <= ((k - 2) * 芹中2 + 1) i++) {
System.out.print(" ")
}
if (k != 1) {
System.out.print("*")
}
System.out.println()
}
}
private static void t8(int num) {
// 上半部分
for (int i = 1 i <= num i++) {
// 打印上半部分空格
for (int j = 1 j <= num - i 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()
}
// 下半部分
for (int i = 1 i <= num - 1 i++) {
for (int j = 1 j <= i j++) {
System.out.print(" ")
}
for (int j = 1 j <= 2 * (num - i - 1) + 1 j++) {
if (j == 1 || j == 2 * (num - i - 1) + 1) {
System.out.print("*")
} else {
System.out.print(" ")
}
}
System.out.println()
}
}
private static void t7(int num) {
// 打印上半部分
for (int i = 1 i <= num i++) {
// 打印空格
for (int j = 1 j <= (num - i) j++) {
System.out.print(" ")
}
// 打印*的个数
if (i == 1) {
System.out.print("*")
} else {
System.out.print("*")
// 打印菱形里的空格
for (int j = 1 j <= (2 * i - 3) j++) {
System.out.print(" ")
}
System.out.print("*")
}
System.out.println()
}
// 打印下半部分
for (int i = num - 1 i > 0 i--) {
// 打印空格
for (int j = 1 j <= (num - i) j++) {
System.out.print(" ")
}
// 打印*的个数
if (i == 1) {
System.out.print("*")
} else {
System.out.print("*")
// 打亩伏印菱形里的空格
for (int j = 1 j <= (2 * i - 3) j++) {
System.out.print(" ")
}
System.out.print("*")
}
System.out.println()
}
}
private static void t6(int num) {
// 上半部分
for (int i = 1 i <= num i++) {
for (int j = 1 j <= num - i j++) {
System.out.print(" ")
}
for (int j = 1 j <= 2 * i - 1 j++) {
System.out.print("*")
}
System.out.println()
}
// 下半部分
for (int i = 1 i <= num - 1 i++) {
for (int j = 1 j <= i j++) {
System.out.print(" ")
}
for (int j = 1 j <= 2 * (num - 1 - i) + 1 j++) {
System.out.print("*")
}
System.out.println()
}
}
private static void t5(int num) {
for (int i = num i > 0 i--) {
for (int j = 1 j <= num - i j++) {
System.out.print(" ")
}
for (int j = 1 j <= 2 * i - 1 j++) {
System.out.print("*")
}
System.out.println()
}
回答于 2022-12-14首先,这个涉及到行和列,所以,这宴闹卖个肯定是用两个for的嵌套来打印输出。然后,我们要找出这个的规律,因为“磨刀不误砍柴工”,所以找出规律所在,我们才知道应该怎么去下手。比如:我们应该把这个分成上下两个部分,上面部分是:*****
第一行:三个部分;2个空格 1个*号 2个空格 (i=1)
*****第二行:三个部分;1个空格弯旦 3个*号 1个空格 (i=2)
*****第三行:三个部分;0个空格 5个*号 0个空格 ( i=3)
为了更加方便去找规律,我们把这个图形补充完整,黑色部分代表着空格,也就是没有显示的部分,而红色部分就是我们的图形的上半部分。所以我们可以得出的规律是:*号的数量和i的关系为:2*i-1 而,空格因为左右一样,所以空格为:3-i。所以上半部分的代码可以这样写:
for(int i =1 i<=3i++){
for(int j=1j<=3-ij++){
System.out.print(" ")//打印左边的空格
}
for(int j=1j<=2*i-1j++){
System.out.print("*")//打印*号
}
for(int j=1j<=3-ij++){
System.out.print(" ")//打印右边空格(也可以省略)
}
System.out.println()//这是每一行打印完就换行
}
那同样的,我们也要在下半部分找出规律来:
*****第一行:三个部分;1个空格 3个*号 1个空格
(i=1)
*****第一行:三个部分;2个空格
1个*号 2个空格 (i=2)
所以我们可以得出的规律是:*号的数量和i的关系为:5-2*i
而,空格因为左右一样,所以空格为:i。所以下半部分的代码可以这样写:
for(int i=1i<=2i++){
for(int j=1j<=ij++){
System.out.print(" ")
}
for(int j=1j<=5-2*ij++){
System.out.print("*")
}
for(int j=1j<=ij++){
System.out.print(" ")
}
System.out.println()
}
同样的任何只要是这样的菱形,我们都可以通过这个规律去打印,只需晌逗要把上面的数字替换掉,替换成需要打印的数字就可以了,然后规律大家也可以自己去找。只要很认真熟练地打印出这个例子,那么for的嵌套使用就可以比较熟练了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)