樂字節小樂上次講完了Java反射,接下來小樂給大家講述Java循環。
循環有以下四部分:
一、循環控制
1、do..while
直到型 ( 先執行後判斷) ,結構爲:
先執行循環體,後判斷布爾表達式。循環體至少執行一次
其流程圖如下:
2、 for
靈活的循環 ( 能夠確定循環次數) ,結構爲:
for 循環語句是支持迭代的一種通用結構,是最有效、最靈活的循環結構
for 循環在執行條件測試後,先執行程序部分,再執行迭代因子( ( 步進) ) 。
初始化部分、條件判斷部分和迭代因子可以爲空語句,但以“;”分開,下面的語句
表示無限循環
在 for 語句的初始化部分聲明的變量,其作用域爲整個 for 循環體,例如:
其流程圖如下:
案例:
a:輸出10次HelloWorld
b:輸出1-10的數據
c:輸出10-1的數據
d:求1-10的和
e:求1-100的和;求1-100的偶數和,求1-100的奇數和;1-50當中能被3整除的數的和
f: 求出 1-100當中既能被3整除又能被5整除還能被2整除的和
g:求出 1-100當中能被3整除或者能被5整除或者能被2整除的和,
h:求5的階乘 5!
i:請找出[1,200]之間能被3整除的 所有數,每行輸出5個數。
J:請找出[1,200]之間能被3整除的所有數,每行輸出5個數,每個數之間用逗號分隔。
K:1+2+3+4+5+6+7+8+9+10=55用程序實現
思考:
鍵盤輸入一個年月日、判斷該年月日是該年的第幾天。
鍵盤輸入一個年月日、判斷該年月日離該年結束還有多少天。
二、嵌套循環
指的是在一個循環語句內部再嵌套一循環或者多個循環輸出如下圖形:
1、5x5的空心正方形
思路:要想打印一個5x5的空心正方形,首先它的第一橫行和最後一行都是填滿的,需要全部遍歷出來,第二三四行和只有左右兩條邊是出來的,中間部分爲空的。因此在打印第二三四列的時候,需要再進行一下判斷,來確定打印空格。
for (int x = 0;x<5 ;x++ ) //先確定是5行5列的正方形
{
if (x>0 && x<4) //打印出中間空的情況
{
for (int z=0;z<5 ;z++ ) //打印豎的列
{
if (z==0 | z==4) //第一和最後一列
{
System.out.print("* "); //輸出“* ”
}else if(z>=1 && z<=4){ //中間三列
System.out.print(" ");//輸出“ ”
}
}
}
else if(x==0 | x==4){ //第一行和最後一行
for (int y=0;y<5 ;y++ )
{
System.out.print("* ");//全部都輸出“*”
}
}
System.out.println("");//println做一個換行(print輸出的內容是不換行的)
}
2、菱形
思路分析: 輸出一個菱形,可以拆分成兩部分進行思考,分成上下兩個三角形來進行輸出,那好了,如何輸出一個三角那,首先,三角形的是一個等腰三角形,而不是直角三角形,所以橫排除了遍歷“*”之外,還需要在其前邊添加若干空格把它擠過去 ,顯得比較好看,所以還得遍歷他前邊的空格。
for (int x = 0;x<10 ;x++ )//假設一共有10豎排
{
if (x<=5)//上半個三角形的情況
{
for (int z =5-x;z>0 ;z-- )//前邊的空格是一個越來越少的三角形形態,所以定義爲5-x
{
System.out.print(" ");
}
for (int y=0;y<x ;y++ )// 第一行一個“*”,第二行2個“*”,可以得出列數是和行數相等的,故定義y<x;
{
System.out.print("* ");//此時輸出“* ”;
}
}else//這是下半個三角形的情況
{
for (int z =0;z<x-5 ;z++ ) //此時前邊空格形態是上少下多,正好爲x-5;
{
System.out.print(" ");
}
for (int y=10-x;y>0 ;y-- )//上寬下窄,所以遍歷“*”爲10-x;
{
System.out.print("* ");
}
}
System.out.println("");
}
3、空心菱形
思路分析:輸出一個空心菱形,需要拆分成三部分進行思考,分成上下兩個三角形來進行輸出,那好了,如何輸出一個三角那,首先,三角形的是一個等腰三角形,而不是直角三角形,所以橫排除了遍歷中間的菱形部分之外,還需要在其前邊添加若干空格把它擠過去 ,顯得比較好看,所以還得遍歷他前邊的空格。中間的空格也需要進行單獨遍歷,而“”做的框,只需要把確定的值確定出來,讓它輸出“”,即可!
for (int x = 0;x<10 ;x++ )//假設一共有10豎排
{
if (x<=5)//上半個三角形的情況
{
for (int z =5-x;z>0 ;z-- )//前邊的空格是一個越來越少的三角形形態,所以定義爲5-x
{
System.out.print(" ");
}
for (int y=0;y<x ;y++ )//這裏了開始就進入正題了,
{
if (y==0 | y==x-1) //這是兩邊的框, 此時輸出“* ”
{
System.out.print("* ");
}else{//中間剩下的部分輸出空格
System.out.print(" ");
}
}
}else{
for (int z =0;z<x-5 ;z++ ) //此時前邊空格形態是上少下多,正好爲x-5;
{
System.out.print(" ");// 不多說,先把空格懟進去
}
for (int y=10-x;y>0 ;y-- )// 10-x爲有幾列
{
if (y==1 | y==10-x ) //第一列和10-x(最後一列)輸出“*”做一個框出來
{
System.out.print("* ");
}else{ //中間部分輸出空格
System.out.print(" ");
}
}
}
System.out.println("");
}
來個九九乘法表:
先賣個關子,也算是留個作業吧,大家開動腦筋,動動手操作下,下次可以公佈答案。