首先,这个涉及到行和列,所以,这个肯定是用两个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=3;i++){
for(int j=1;j=3-i;j++){
System.out.print(" ");//打印左边的空格
}
for(int j=1;j=2*i-1;j++){
System.out.print("*"); //打印*号
}
for(int j=1;j=3-i;j++){
System.out.print(" ");//打印右边空格(也可以省略)
}
System.out.println();//这是每一行打印完就换行
}
那同样的,我们也要在下半部分找出规律来:
***** 第一行:三个部分;1个空格 3个*号 1个空格
(i=1)
***** 第一行:三个部分;2个空格
1个*号 2个空格 (i=2)
所以我们可以得出的规律是:*号的数量和i的关系为:5-2*i
而,空格因为左右一样,所以空格为:i。所以下半部分的代码可以这样写:
for(int i=1;i=2;i++){
for(int j=1;j=i;j++){
System.out.print(" ");
}
for(int j=1;j=5-2*i;j++){
System.out.print("*");
}
for(int j=1;j=i;j++){
System.out.print(" ");
}
System.out.println();
}
同样的任何只要是这样的菱形,我们都可以通过这个规律去打印,只需要把上面的数字替换掉,替换成需要打印的数字就可以了,然后规律大家也可以自己去找。只要很认真熟练地打印出这个例子,那么for的嵌套使用就可以比较熟练了。
Java利用for循环输出空心菱形的实例代码
编写程序,在控制台上输出空心菱形,对角距离为6.
代码如下:
public class Diamond {
public static void main(String[] args) {
printHollowRhombus(6);
}
public static void printHollowRhombus(int size) {
if (size % 2 == 0) {
size++;// 计算菱形大小
}
for (int i = 0; i size / 2 + 1; i++) {
for (int j = size / 2 + 1; j i + 1; j--) {
System.out.print(" ");// 输出左上角位置的空白
}
for (int j = 0; j 2 * i + 1; j++) {
if (j == 0 || j == 2 * i) {
System.out.print("* ");// 输出菱形上半部边缘
} else {
System.out.print(" ");// 输出菱形上半部空心
}
}
System.out.println(""); //换行
}
for (int i = size / 2 + 1; i size; i++) {
for (int j = 0; j i - size / 2; j++) {
System.out.print(" ");// 输出菱形左下角空白
}
for (int j = 0; j 2 * size - 1 - 2 * i; j++) {
if (j == 0 || j == 2 * (size - i - 1)) {
System.out.print("* ");// 输出菱形下半部边缘
} else {
System.out.print(" ");// 输出菱形下半部空心
}
}
System.out.println(""); //换行
}
}
}
效果如图:
import java.util.Scanner;
class 菱形 {
public static void main(String args[]) {
int row;
Scanner keyin = new Scanner(System.in);
System.out.print("请输入菱形的行数:");
row = keyin.nextInt(); //输入的数字整数!
for (int i = 1; i = row / 2 + 1; i++) {//上半部分三角形:不用担心输入偶数,因为折半+1了;
repeat(" ", row / 2 + 1 - i);//空格:注意这是递减
repeat("*", 2 * i - 1);//星:注意这是递减
System.out.println();//打完一排换行!
}
//下半部分三角形原理同上!
for (int i = row / 2; i = 1; i--) {
repeat(" ", row / 2 + 1 - i);//递增
repeat("*", 2 * i - 1);//递减!
System.out.println();//换行!
}
}
public static void repeat(String c, int m) {
for (int i = 1; i = m; i++)
System.out.print(c);
}
/**
*
* 这个程序整体思路:把菱形分成上下两个三角形在打印,因为菱形是奇数
* 上半部分采用了折半+1的算法,所有你输入任何数都不怕!
* 如果5,上面就是3下面就是2
* 如果6上面就是4下面就是3
* 空格采用的算法与打出来的星,相反方式:一个递增一个递减!
*
*
*/
}
方式如下:
public class Test {
public static void main(String[] args) {
int lay;
// 菱形的总长度
lay = 7;
// 正序输出上半部分
for (int m = 1; m = (lay + 1) / 2; m++) {
for (int b = 1; b = (lay + 1) / 2 - m; b++)// 输出空格
{
System.out.print(" ");
}
for (int c = 1; c = m * 2 - 1; c++) {
System.out.print("*");
}
// 换行
System.out.println();
}
// 倒序输出下半部分
for (int d = (lay + 1) / 2 - 1; d = 1; d--) {
for (int b = 1; b = (lay + 1) / 2 - d; b++)// 输出空格
{
System.out.print(" ");
}
for (int c = (lay + 1) / 2 - d; c = (lay + 1) / 2 - 2 + d; c++)// (lay+1)/2-1即为下半个三角形
{
System.out.print("*");
}
System.out.println();
}
}
}
运行结果:
public static void main(String[] args) {
for (int row = 0; row 5; row++) {
for (int col = 1; col = 2 * row - 1; col++) {
System.out.print("*");
}
System.out.println();
}
System.out.println("正的直角三角形");
System.out.println("-------------------------------------------------");
for (int row = 0; row 5; row++) {
for (int col = 5; col = 2 * row - 1; col--) {
System.out.print("*");
}
System.out.println();
}
System.out.println("倒的直角三角形");
System.out.println("-------------------------------------------------");
for (int row = 0; row 5; row++) {
for (int col = 0; col 5 - row; col++) {
System.out.print(" ");
}
for (int col = 0; col 2 * row - 1; col++) {
System.out.print("*");
}
System.out.println();
}
System.out.println("正的等腰三角形");
System.out.println("-------------------------------------------------");
for (int row = 0; row 5; row++) {
for (int col = 0; col = row; col++) {
System.out.print(" ");
}
for (int col = 5; col = 2 * row - 1; col--) {
System.out.print("*");
}
System.out.println();
}
System.out.println("倒的等腰三角形");
System.out.println("-------------------------------------------------");
for (int row = 0; row 5; row++) {
for (int col = 5; col row; col--) {
System.out.print(" ");
}
for (int col = 0; col = row; col++) {
System.out.print("* ");
}
System.out.println();
}
System.out.println("正的加空格等腰三角形");
System.out.println("-------------------------------------------------");
for (int row = 0; row 5; row++) {
for (int col = 1; col = row; col++) {
System.out.print(" ");
}
for (int col = 5; col row; col--) {
System.out.print("* ");
}
System.out.println();
}
System.out.println("倒的加空格等腰三角形");
System.out.println("-------------------------------------------------");
for (int row = 0; row 5; row++) {
for (int col = 5; col row; col--) {
System.out.print(" ");
}
for (int col = 0; col = row; col++) {
System.out.print("* ");
}
System.out.println();
}
for (int row = 1; row 5; row++) {
for (int col = 0; col = row; col++) {
System.out.print(" ");
}
for (int col = 5; col row; col--) {
System.out.print("* ");
}
System.out.println();
}
System.out.println("实的菱形");
System.out.println("-------------------------------------------------");
for (int row = 1; row = 5; row++) {
for (int col = 5; col = row; col--) {
System.out.print(" ");
}
for (int col = 1; col = 2 * row - 1; col++) {
if (col == 1 || col == 2 * row - 1) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println();
}
for (int row = 1; row = 5; row++) {
for (int col = 1; col = row + 1; col++) {
System.out.print(" ");
}
for (int col = 1; col = 2 * (4 - row) + 1; col++) {
if (col == 1 || col == 2 * (4 - row) + 1) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println();
}
System.out.println("空的菱形");
System.out.println("-------------------------------------------------");
for (int row = 1; row = 5; row++) {
for (int col = 5; col = row; col--) {
System.out.print(" ");
}
for (int col = 1; col = 2 * row + 7; col++) {
// 判断行数是第一行要奇数打*
if (row == 1 col % 2 == 1) {
System.out.print("*");
// 判断行数是第一行要偶数打空格
} else if (row == 1 col % 2 == 0) {
System.out.print(" ");
// 判断行数是第一行和最后一行打*
} else if (col == 1 || col == 2 * row + 7) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println();
}
for (int row = 1; row = 4; row++) {
for (int col = 1; col = row + 1; col++) {
System.out.print(" ");
}
for (int col = 1; col = 2 * (8 - row) + 1; col++) {
if (row == 4 col % 2 == 1) {
System.out.print("*");
} else if (row == 4 col % 2 == 0) {
System.out.print(" ");
} else if (col == 1 || col == 2 * (8 - row)+ 1) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println();
}
System.out.println("掏空的六边形");
System.out.println("----------------------------------------------");
}
刚写了几个例子,其实就是对循环语句的熟练。希望能帮到你!
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