Java 基礎 | 循環結構和數組
阿新 • • 發佈:2018-08-06
相同 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 基礎 | 循環結構和數組