Java 实例 – 打印菱形
输出指定行数的菱形。
package com.example.yan.java打印图形; public class Main { public static void main(String[] args) { print(8); // 输出 8 行的菱形 } public static void print(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++) { 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++) { System.out.print("*"); // 输出菱形下半部边缘 } System.out.println(); // 换行 } } }
手动输入展示图片
public static void main(String[] args) { while (true){ Scanner scanner = new Scanner(System.in); System.out.println("************请输入菱形的数目************"); String n = scanner.nextLine(); System.out.println("打印的图形如下================"); print(Integer.valueOf(n)); } } public static void print(int n){ if (n % 2 == 0) { n++;//计算菱形的行数 } for (int i = 0; i < n; i++){ int start;//第i行开始画菱形的下标 int end;//第i行结束画菱形的下标 if (i <= n/2){//计算递增部分开始结束下标 start = n/2-i; end = n/2+i; }else {//计算递减部分开始结束下标 start = n/2 - (n-1-i); end = n/2 + (n-1-i); } int count = 0; for (int j =0; j<n;j++){ if (j>=start && j<=end){//开始结束之间即画图部分 System.out.print("*"); count++; if (count == end - start +1){ break; } }else { System.out.print(" "); } } System.out.println(); } }
Java 实例 – 九九乘法表
输出九九乘法表。
public class MultiplicationTable { public static void main(String[] args) { for(int i=1;i<=9;i++) { for(int j=1;j<=i;j++) { System.out.print(j+"×"+i+"="+i*j+"\t");// \t 跳到下一个TAB位置 } System.out.println(); } } }
Java 实例 – 打印三角形
首先,确定我们的输出结果是:
那么我们怎么才能做到这样呢?
1、首先分析图形的结构
我们可以看到,图形共5行,那么,我们是否可以建立一个for循环语句,使其控制在5行?答案是肯定的。
for(int i = 1 ;i <= 5 ;i++ ){ }
这样,我们就建立了一个循环5次的for循环代码块,为最外圈的循环。
2、然后,分析图形是怎样构成的,我们可以把图形拆分为以下几部分:
图片说明
我们可以把图形拆分为这样三个三角形。
3、建立1号空白三角形
可以看,第一行是输出4个空格,第二行输出3个空格,第三行输出2个,第四行输出1个,第五行没有
从这个规律可以看出,是依次递减的规律,那么如何实现呢?
我们可以想象从1到5,中间有四个数字;从2到5中间有3个数字,从3到5……
是不是可以利用这个原理呢?答案是当然的。那么如何实现?请看代码:
for(int i = 1;i<=5 ;i++) { for(int j = 5; j >= i ; j--)//建立1号图形 System.out.print(" "); System.out.println(); }
第一个for语句就是刚才定义的五次循环语句
第二个for循环,我们来进行解析:
首先 定义一个int类型的j变量,给j赋值为5
然后我们想,既然要缩短距离,那么每次循环j就-1,那么刚好符合我们的要求:
第一次大循环 i=1,j=5, 所以符合j>=i的条件然后输出一个空格,然后j-1,现在j的值为4符合j>=i,再输出
……
一直到j=0,j>=i不符合,跳出内循环
现在到System.out.println(); 换行
现在回到外循环 i++ ,i变成2,符合i<=5,进入内循环
定义j=5 , j>=i,符合,输出一个空格,j-1
j现在为4 ,j>=i,符合,输出一个空额,j-1
……
一直到j=1,j>=i,不成立,跳出内训还,然后换行
然后i+1 然后再进入内循环……
如此循环下去 形成了一个四行的倒三角,1号图案形成。
4、建立2号图形,和1号图形原理完全相同,不过正好相反
for(int i = 1 ;i<=5 ;i++){ for(int j = 5; j >= i ; j--)//建立1号图形 System.out.print(" "); for(int j = 1; j <= i; j++)//建立2号图形 System.out.print("*"); System.out.println(); }
如建立1号图形相同,大家可以自己理解,如此2号建立
5、建立3号图形
for(int i = 1; i <= 5; i++){ for(int j = 5 ;i <= j; j--)//建立1号图形 System.out.print(" "); for(int j = 1; j <= i; j++)//建立2号图形 System.out.print("*"); for(int j = 1; j < i; j ++)//建立3号图形 System.out.print("*"); }
同样,如同1号二号相同,建立3号图形原理相同
但是大家注意一点,3号图形没有在第一行输出,所以要在第一次大循环中掐断它,让它在第二次大循环中输出
所以 这次的判断条件为 j < i 去掉了等于。
class Demo{ public static void main(String[] args){ for(int i=1;i<=5;i++){ for(int j=5; i<=j; j--) System.out.print(" "); for(int j=1; j<=i; j++) System.out.print("*"); for(int j=1; j<i; j++) System.out.print("*"); System.out.println(); } } }