天天看點

Java 基礎學習之循環的解讀

一 循環的種類:

  1. while

結構:

int n = 1;
		while(true) {
			System.out.println("我是誰 我從哪裡來");
			//添加一個出口停止循環
			if (n==5) {
				//接收循環  跳出循環語句
				break;
				// break 後面的語句是永久不會執行.
			}
			
			n++;
		}
           

如果判斷條件為true 則 while 成為死循環  可以在循環體中添加個出口(if判斷)來結束循環

  1. do while
do {
       //代碼語句
}while(判斷表達式);
           

do while 是先執行循環語句 再進行條件判斷.

  1. for 循環
for(初始值定義1; 判斷表達式2; 自增或自減3) {
    //代碼語句4
}
           

執行順序 1--2--4--3--2---4--3 .......

for 循環中的變量隻能在循環中使用.

二 循環的應用

明确循環停止條件時一般使用while循環  周遊數組是使用for循環;

循環套循環

Java 基礎學習之循環的解讀
for (int i = 0; i < 5; i++) {
			for (int j=i;j<5;j++) {
				System.out.print("*");
			}
			System.out.println();
		}
           
Java 基礎學習之循環的解讀
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); 
    } 
  }