1. 程式人生 > >Java 基礎 | 循環結構和數組

Java 基礎 | 循環結構和數組

相同 bounds args 其中 不用 結果 for 程序 ext

接著前幾天的分支結構的回顧,今天主要回顧一下循環結構和數組方面的一些知識吧。 練習:輸入一個數字,然後輸出這個數字表示星期幾 switch(選擇){ case 選項1:Code1;break; case 選項2:Code2;break; …… } 1.switch() 中需要一個選項,選項只能是 byte/short/char/int,從JDK 1.7開始,允許使用 String case 順序不影響結果 2.如果有一個或者多個 case 之後沒有 break,那麽這個時候 case 之間的順序影響結果 練習:輸入兩個數字以及一個符號,輸出這兩個數字在這個符號下運算產生的結果
5 9 + ->14 練習:輸入三個數字表示年月日,輸出這一天在這一年時第幾天 2012 3 5 ------>65 2014 3 5 ------>64 需要判斷平年閏年:逢百整除 400;不逢百整除 4 2012 % 4 = 0 2100 % 400 = 0 --- false 循環結構: 用於完成一些相同或者相似的重復操作 while(邏輯值){ Code; } 練習: 1.求 1-100 以內所有的奇數的和 --- i=1; i+=2; 2.打印 100 以內能被 3 整除而不能被 7 整除的數字 int i = 0; i +=3; 3.輸入一個數字,輸出這個數字是一個幾位數。* 4.輸入一個數字,輸出這個數字的所有因數。 --- 從 1 開始,逐個數字取余這個輸入的數字,看是否能夠整除 * 20:1 2 4 5 10 20 定義一個循環,需要三個要素:定義一個變量來控制次數,利用判斷條件決定循環結束;在循環過程中需要改變變量 do{ Code; //先執行代碼塊,再執行邏輯值,如果邏輯值為 true,轉過頭來繼續執行代碼塊;如果為 false,就執行接下來的程序。 }whie(邏輯值); 註意:無論條件是否滿足,do-while 的循環體必然至少執行一次。
2 7 for(){定義循環變量; 控制條件; 改變循環變量){ // 1 4 5 6 Code; } 註意:對於 for 循環而言,如果第二部分的控制條件沒有寫,那麽默認是 true,這個時候就成了一個死循環。 習慣上如果變化不規律或者次數不確定一般使用while(比如,從控制臺獲取一個大於 10 的奇數,有可能輸入很多次,就是用這個) while(n < 10 || n % 2 ==0){ n =s.nextInt(); } for(; n < 10 || n % 2 == 0; n = s.nextInt())
          //求 1-50 的和
		int sum = 0;
		//對於 for 循環而言,如果第二部分的控制條件沒有寫,那麽默認是 true,這個時候就成了一個死循環。
		for(int i = 1; i <= 50; i++){
			sum += i;
			i++;
		}
		System.out.println(sum);

  

練習:百錢百雞 --- 3 文錢 1只公雞, 2 文錢 1 只 母雞,1 文錢 3 只小雞;100 文錢如何買恰好 100 只雞? --- 先定義一個循環表示公雞,嵌套一個循環表示母雞,計算小雞的個數,根據各種雞的個數來計算錢數是否為 100
/**
練習:百錢百雞  --- 3 文錢 1只公雞, 2 文錢 1 只 母雞,1 文錢 3 只小雞;100 文錢如何買恰好 100 只雞?
 --- 先定義一個循環表示公雞,嵌套一個循環表示母雞,計算小雞的個數,根據各種雞的個數來計算錢數是否為 100
*/
import java.util.Scanner;
public class Demo2d{
	public static void main(String[] args){
		Scanner s = new Scanner(System.in);
		for(int i = 1 ; i <= 33 ; i++)
		    for(int j = 1; j <= 50; j++){
			int k = 100 - i - j
			if(k % 3 == 0 && 3*i+2*j+k/3 == 100){
				System.out.print(i+","+j+","+k+"\t");
			}
		    }
		}
}

  

break 和 continue break:用於選擇結構和循環結構,表示結束當前的一層結構 continue:只能用於循環結構,表示跳過本次循環繼續下次循環, 擴展作業:一個循環打印九九乘法表
            for(int i = 1; i <= 9; i++){
			for(int j = 1; j <= i; j++){
				//if(i*j >= 10){
				//	System.out.print(i+"*"+j+"="+i*j+"   ");
				//}else{
				//	System.out.print(i+"*"+j+"="+i*j+"    ");
				//}
				System.out.print(i+"*"+j+"="+i*j+"\t");//使用制表符 \t,可以不用自己特意去控制了,自動左邊對齊了。
			}
			System.out.println();	
			
	}

  

數組 存儲同一類型的多個數據的容器 --- 大小固定的 數組會對放入其中的數據進行編號,編號是從 0 開始的 --- 下標(比數組的長度少一個) 數組的容量 --- 長度 定義格式 數據類型[] 數組名 = new 數據類型[長度]; int arr = new int[5]; 表示定義一個能存儲 5 個整型元素的數組 arr[3] = 10; arr[5] = 7; // ArrayIndexOutOfBoundsException ---數組下標越界異常 內存 Java 將所占用的內存劃分為了 5 塊:棧內存(*)、堆內存(*)、方法區、本地方法棧(涉及到塊語言的問題)、PC 計數器(寄存器,跟硬件相關) 棧內存 用於存儲變量的,變量在棧內存中使用完成之後會立即移除出棧內存,有種卸磨殺驢的樣子。只要遇到 new ,就會在堆中開辟一塊空間(從 0-n劃分),有地址。對於裏面的數據先默認一個值(0),當賦值後改變值。 堆內存 用於存儲對象(數組是一種特殊的對象)的。元素在存入堆內存中之後會自動的賦予默認值:byte/short/int -0 long -0L float -0.0f double -0.0 char -‘\u0000‘ boolean -false,其他類型的默認值都是null。 [(表示數據類型 --- [ 表示數組) I(如果這是一個數組,那麽是這一部分表示數組中的元素類型 --- I 表示 Int) @(標記符號,表示後邊是一個地址) 15db9742(可以認為表示一個地址,實際上是這個對象的哈希碼的十六進制形式) 對象在用完之後是在不確定的某個時刻被回收。 明天內容: 數組 定義 內存 應用 遍歷、排序、查找、反轉、復制 時間/空間復雜度 --- 數列(等差數列求和)、指數、對數(對數公式 logab=logcb/logca,logabn=nlogab logab=1/logba) 二維數組

Java 基礎 | 循環結構和數組