Java基础---双层for循环之小星星实操
在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();
}
本文来自博客园,作者:小孙不是程序员,转载请注明原文链接:https://www.cnblogs.com/sunlincode/p/15926845.html