一 循環的種類:
- while
結構:
int n = 1;
while(true) {
System.out.println("我是誰 我從哪裡來");
//添加一個出口停止循環
if (n==5) {
//接收循環 跳出循環語句
break;
// break 後面的語句是永久不會執行.
}
n++;
}
如果判斷條件為true 則 while 成為死循環 可以在循環體中添加個出口(if判斷)來結束循環
- do while
do {
//代碼語句
}while(判斷表達式);
do while 是先執行循環語句 再進行條件判斷.
- for 循環
for(初始值定義1; 判斷表達式2; 自增或自減3) {
//代碼語句4
}
執行順序 1--2--4--3--2---4--3 .......
for 循環中的變量隻能在循環中使用.
二 循環的應用
明确循環停止條件時一般使用while循環 周遊數組是使用for循環;
循環套循環

for (int i = 0; i < 5; i++) {
for (int j=i;j<5;j++) {
System.out.print("*");
}
System.out.println();
}
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 2*i+1; j++) {
System.out.print("*");
}
System.out.println();
}
通過以上兩個示例我們可以得到一個結論:
尖角向上的三角形 修改内循環 判斷值部分
尖角向下的三角形 修改内循環 初始值部分
break 和continue在for循環中的使用
for (int i = 0; i < 10; i++) {
for (int j = 0; j <10; j++) {
if (j==3) {
//break;
//結束目前循環 外循環繼續執行
continue ;
//跳出目前循環 下一次循環繼續執行,不影響外循環
}
System.out.print(j);
}
System.out.println();
}
}
break 和 continue 都隻是對最近的循環産生影響而不影響上層循環.
break
012
012
012
012
012
012
012
012
012
012
continue
012456789
012456789
012456789
012456789
012456789
012456789
012456789
012456789
012456789
012456789
三 随機數
随機數 使用(Math類)
double random = Math.random()
僞随機:通過系統一個計算規則算出随機數
傳回的随機數範圍[0,1)
得出随機範圍為[min,max]的随機數
int random= (int)(Math.random()*(max+1-min)+min);
四 函數
函數:分裝特定功能的代碼串.
好處:減少重複代碼 提高了開發效率
寫法:
沒有傳回值使用 void
函數的書寫位置 必須在類中 不能在函數中定義函數;
函數調用必須在主函數中.
參數清單
關鍵字 (public static)+傳回值類型 +函數名(小駝峰) + (參數類型1 參數名1,參數類型2 參數名2........)+{
函數體:執行的特定功能的語句
return + 傳回值;
}
函數傳參和重載
傳參可以提高方法的拓展性
函數的傳回值可以不用接收
函數的重載 :
實作相同功能 但是内部實作不同 就可以使用函數的重載;
是不是函數的重載隻跟 參數有關 并且 隻跟參數的類型 參數順序 參數個數 有關,同 函數的傳回值類型 函數的實作無關.
是否重載隻更參數有關 當參數類型 順序 個數不同是 可以重載 ;
應用:
public static void main(String[] args) {
int tt=max(4, 5 , 8 ,66 ,88);
System.out.println(tt);
}
/**
*
* 需求: 定義函數
* 1.計算2個數的最大值
* 2.計算3個數的最大值
* 3.計算4個數的最大值
* 4.計算5個數的最大值
*/
public static int max(int a, int b) {
int num=(a>b)?a:b;
return num;
}
public static int max(int a, int b, int c) {
int num = max(a, b);
return (num>c)?num:c;
}
public static int max(int a, int b, int c,int d) {
int num = max(a, b, c);
return (num>d)?num:d;
}
public static int max(int a, int b, int c,int d,int e) {
int num = max(a, b, c, e);
return (num>e)?num:e;
}
五 遞歸函數
//編寫 4!
public static double fun(long n) {
//4*3*2*1 傳進來的值自減;
if (n == 1) {
return 1;
}
return n * fun(n - 1);
}
public static void main(String[] args) {
double num = fun(100);
System.out.println(num);
/*int mul = 1;
for (int i = 1; i <= 4; i++) {
mul*=i;
}
System.out.println(mul);*/
}
遞歸函數:
方法中出現調用同名函數 函數中必須有分支:
要求輸出一個序列:1,1,2,3,5,8,11......(每一個數為前兩個數子之和,要求用遞歸函數)
用java遞歸來表示一個函數:F(n)=F(n-1)+F(n-2);F(0)=1;F(1)=1;
分析:X1=1; X2=1; X3=X1+X2; X4=X2+X3; ... ; Xn=X(n-1)+X(n-2)
public int F(int n){
if(n==1){
return 1;
}else if(n==2){
return 1;
}else{
return F(n-1)+F(n-2);
}
}