在Java基礎中,我們會學到循環結構,其中for的雙層循環更為常見。比如熟知的9*9乘法表就是用 雙層for循環。
雙層for循環的特點:1、內層循環一遍,相當於外層循環只執行一次。2、循環總次數=內循環總數*外循環總數。
既然學到for循環,我們可以用for循環玩玩小星星。打印三角形時要分析空格和星星的數量規律,打印菱形時,要分析空格,星星以及菱形內的空格的規律。
需求1:打印一排七個小星星。
查看代碼
//******
System.out.println("----打印一行星號----");
System.out.println("******");
//******
System.out.println("----打印一行星號----");
for (int i = 1; i <= 6; i++) {
System.out.print("*");
}
System.out.println("\n");
需求2:打印4*6的矩形小星星
查看代碼
System.out.println("----打印4*6的星號----");
for (int i = 1; i <= 4; i++) {//行數
for (int j = 1; j <=6; j++) {//星星個數
System.out.print("*");
}
System.out.println();
}
需求3:打印直角三角形小星星
查看代碼
/* i(行號) j(*的個數)
* 1 1
** 2 2
*** 3 3
**** 4 4
***** 5 5
*分析:星星數=行數
*/
System.out.println("----打印直角三角型----");
//方法一
for (int i = 1; i <6; i++) {//行數
for (int j = 1; j <= i; j++) {//星星個數,用++的方式。
System.out.print("*");
}
System.out.println();
}
//方法二
for (int i = 1; i <= 5; i++) {//行數
for (int j = 5; j > 5-i; j--) {///星星個數,用--的方式。
System.out.print("*");
}
System.out.println();
}
需求4:打印倒直角三角形小星星
/* i(行號) j(*的個數) 規律:i + j = 5 換句話說:j = 5 - i;
**** 1 4
*** 2 3
** 3 2
* 4 1
*分析:星星數=5-行數
*/
System.out.println("----打印倒三角形----");
for (int i = 1; i < 5; i++) {//行數
for (int j = 1; j <= 5-i; j++) {//星星的個數
System.out.print("*");
}
System.out.println();
}
需求5:打印側立等腰三角形小星星
查看代碼
/*
*
**
***
****
*****
****
***
**
*
*行數: 1,2,3,4,5,6,7,8,9
*星星個數: 1,2,3,4,5,4,3,2,1
*分析:上半部分:星星數=行數;下半部分:星星數+行數=5
*/
System.out.println("----打印半邊三角----");
//方法一:
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}
for (int i = 1; i <= 4; i++) {
for (int j = 5-i; j >= 1; j--) {
System.out.print("*");
}
System.out.println();
}
//方法二
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}
for (int i = 1; i <= 4; i++) {
for (int j = 1; j<=5-i; j++) {
System.out.print("*");
}
System.out.println();
}
需求6:打印實心菱形小星星
查看代碼
/* i(當前行數) j(*的個數) k(空格數量)
* 1 1個* 8(4)
*** 2 3個* 6(3)
***** 3 5個* 4(2)
******* 4 7個* 2(1)
********* 5 9個* 0
******* 6(1)4 7個* 2(1)
***** 7(2)3 5個* 4(2)
*** 8(3)2 3個* 6(3)
* 9(4)1 1個* 8(4)
* 分析:
* 上半部分:星星數=2*當前行數-1=2*i-1,空格數=總行數-當前行數=5-i ;
* 下半部分:星星數=2*i-1 ,空格數 =5-i
*/
System.out.println("----打印菱形1----");
//方法一:
for (int i = 1; i <= 5; i++) {//上半部分
for (int j = 5; j > i; j--) {//空格數= 5-當前行數
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();
}
for (int i = 1; i <= 4; i++) {//下半部分
for (int j = 1; j <= i; j++) {
System.out.print(" ");
}
for (int j = 4; j >= i ; j--) {
System.out.print("*");
}
for (int j = 4; j > i; j--) {
System.out.print("*");
}
System.out.println();
}
System.out.println("--------------------");
System.out.println("----打印菱形2----");
//方法二:
for (int i = 1; i <= 5; i++) {//行數
for (int k = 1; k <=5-i; k++) {//空格個數
System.out.print(" ");
}
for (int j = 1; j <= 2*i-1; j++) {//星星數
System.out.print("*");
}
System.out.println();
}
for (int i = 4; i>=1; i--) {//行數
for (int j = 1; j <=5-i; j++) {//空格數
System.out.print(" ");
}
for (int j = 1; j <= 2*i-1; j++) {//星星數
System.out.print("*");
}
System.out.println();
}
需求7:打印半空型菱形小星星
查看代碼
/* i j(*的個數) k(空格數量)
* 1 1個* 8
* * 2 2個* 7
* * * 3 3個* 6
* * * * 4 4個* 5
* * * * * 5 5個* 4
* * * * 6 4個* 5
* * * 7 3個* 6
* * 8 2個* 7
* 9 1個* 8
* 分析:上半部分:左邊空格 = 5-i,星星=2i-1 內部星星=2k-1(其中k是偶數部分用空格代替。),下半部分 左邊空格=5-i,內部星星=2*i-1
*/
System.out.println("----打印空心菱形1----");
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= 5-i ; j++) {
System.out.print(" ");
}
for (int k = 1; k <= 2*i-1; k++) {
if(k % 2 == 0){
System.out.print(" ");
}else{
System.out.print("*");
}
}
System.out.println();
}
for (int i = 4; i >=1; i--) {
for (int j = 1; j <= 5-i; j++) {
System.out.print(" ");
}
for (int j = 1; j <=2*i -1 ; j++) {
if(j %2 ==0){
System.out.print(" ");
}else{
System.out.print("*");
}
}
System.out.println();
}
需求8:打印空心菱形小星星
查看代碼
/*
*
* *
* *
* *
* *
* *
* *
* *
*
*/
System.out.println("----打印空心菱形1----");//方法1
for (int i = 1; i <=5; i++) {
for (int j = 1; j <= 5-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 = 4; i>=1; i--) {
for (int j = 1; j <= 5-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();
}
System.out.println("----打印空心菱形2----");//方法2
for (int i = -5; i <= 5; i++) {//利用數學方法|X|+|Y|=5
for (int j = -5; j <=5; j++) {
if((i>0?i:-i)+(j>0?j:-j)==5){
System.out.print("*");
}else{
System.out.print(" ");
}
}
System.out.println();
}
需求9:打印復雜的圖形(倒直角三角形和半空菱形組合)
查看代碼
/*
i j(*和-總數為5)
----* 1 1個*+4個-
---* * 2 2個*+3個-
--* * * 3 3個*+2個-
-* * * * 4 4個*+1個-
* * * * * 5 5個*+0個空
* * * * 6 4個*+1個*
* * * 7 3個*
* * 8 2個*
* 9 1個*
*/
System.out.println("----有點復雜的三角形----");
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= 5-i; j++) {//外部空格部分
System.out.print("-");
}
for (int k = 1; k <= 2*i-1; k++) {
if(k%2 == 0){
System.out.print(" ");
}else{
System.out.print("*");
}
}
System.out.println();
}
for (int i = 4; i>=1; i--) {
for (int j = 1; j <= 5-i; j++) {
System.out.print(" ");
}
for (int m = 1; m <= 2*i-1 ; m++) {
if(m%2 == 0){
System.out.print(" ");
}else{
System.out.print("*");
}
}
System.out.println();
}
需求10: 9*9乘法表
查看代碼
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <=i; j++) {
System.out.print(j+"*"+i+"="+ i * j+"\t");
}
System.out.println();
}