Day4-循環(huán)和數(shù)組(P31~38)

循環(huán)

循環(huán)語句功能: 在某些條件滿足的情況下,反復執(zhí)行特定代碼的功能

循環(huán)語句的四個組成部分

初始化部分(init_statement)
循環(huán)條件部分(test_exp)
循環(huán)體部分(body_statement)
迭代部分(alter_statement)

循環(huán)語句分類: for 循環(huán)、while 循環(huán)、do/while 循環(huán)

for 循環(huán)語句

語法格式
for (初始化表達式①; 布爾值測試表達式②; 更改表達式){
??語句或語句塊③;

1. 從1循環(huán)到150并在每行打印一個值,另外在 每個3的倍數(shù)行上打印出“foo”,在每個5的倍數(shù)行上打印“biz”,在每個7 的倍數(shù)行上打印輸出“baz” 。2. 打印1~100之間所有奇數(shù)的和3. 打印1~100之間所有是7的倍數(shù)的整數(shù)的個數(shù)及總和(體會設置計數(shù) 器的思想)4. 輸出所有的水仙花數(shù),所謂水仙花數(shù)是指一個3位數(shù),其各個位 上數(shù)字立方和等于其本身。 例如: 153 = 111 + 333 + 555

while 循環(huán)語句

while( 布爾值測試表達式){
??語句或語句塊; [更改語句;]
}

do-while 循環(huán)語句

do{
??語句或語句塊; [更改語句;]
}while(布爾值測試表達式);

5. 求1到100之間所有偶數(shù)的和。用for和while語句分別完成.

嵌套循環(huán)

將一個循環(huán)放在另一個循環(huán)體內,就形成了嵌套循環(huán)。其中, for ,while ,do…while均可以作為外層循環(huán)和內層循環(huán)。
實質上,嵌套循環(huán)就是把內層循環(huán)當成外層循環(huán)的循環(huán)體。當只有內層循環(huán)的循 環(huán)條件為false時,才會完全跳出內層循環(huán),才可結束外層的當次循環(huán),開始下一 次的循環(huán)。
設外層循環(huán)次數(shù)為m次,內層為n次,則內層循環(huán)體實際上需要執(zhí)行m*n=mn次。

例題:1)九九乘法表 2)1—100之間的所有質數(shù)

break語句用于終止某個語句塊的執(zhí)行
break終止當前所在的循環(huán)
continue語句用于跳過某個循環(huán)語句塊的一次執(zhí)行
continue語句出現(xiàn)在多層嵌套的循環(huán)語句體中時,可以通過標簽指明要跳過的是哪一層循環(huán)

return:并非專門用于結束循環(huán)的,它的功能是結束一個方法。當一 個方法執(zhí)行到一個return語句時,這個方法將被結束。 與break和continue不同的是,return直接結束整個方法,不管這個 return處于多少層循環(huán)之內

數(shù)組

一維數(shù)組的聲明方式: type var[] 或 type[] var

例如:
int a[];
int[] a1;
double b[];
Mydate[] c; //對象數(shù)組

動態(tài)初始化:數(shù)組聲明且為數(shù)組元素分配空間與賦值的操作分開進行

int[] arr = new int[3];
arr[0] = 3;
arr[1] = 9;
arr[2] = 8;

靜態(tài)初始化:在定義數(shù)組的同時就為數(shù)組元素分配空間并賦值。
int a[] = new int[]{ 3, 9, 8};
int[] a = {3,9,8};

數(shù)組元素的引用

定義并用運算符new為之分配空間后,才可以引用數(shù)組中的每個元素;
數(shù)組元素的引用方式:數(shù)組名[數(shù)組元素下標]
數(shù)組元素下標可以是整型常量或整型表達式。如a[3] , b[i] , c[6*i];
數(shù)組元素下標從0開始;長度為n的數(shù)組合法下標取值范圍: 0 —>n-1;如int a[]=new int[3]; 可引用的數(shù)組元素為a[0]、a[1]、a[2]
每個數(shù)組都有一個屬性length指明它的長度,例如:a.length 指明數(shù)組a的長度(元素 個數(shù))
數(shù)組一旦初始化,其長度是不可變的

多維數(shù)組

二維數(shù)組[][]:數(shù)組中的數(shù)組
int[][] arr = new int[2][3]; //定義了名稱為arr的二維數(shù)組里有三個一維數(shù)組,每一個一維數(shù)組中有兩個元素。

int[][] arr = new int[][]{{3,4,2},{2,6},{9,0,4,6}}; //第三個一維數(shù)組的長度是arr[2].length;

java重點多維數(shù)組不必都是規(guī)則矩陣形式。
int[]x,y[];是特殊寫法,x是一維數(shù)組,y是二維數(shù)組。

數(shù)組中涉及的常見算法

1.求數(shù)組元素的最大值、最小值、總和、平均數(shù)
2.數(shù)組的復制、反轉
3.數(shù)組元素的排序

數(shù)組排序 ??
插入排序 ? 直接插入排序、折半插入排序、Shell排序
交換排序 ? 冒泡排序、快速排序(或分區(qū)交換排序)
選擇排序 ? 簡單選擇排序、堆排序
歸并排序
基數(shù)排序

冒泡排序 排序思想: 相鄰兩元素進行比較,如有需要則進行交換,每完成一次循環(huán)就將最大 元素排在最后(如從小到大排序),下一次循環(huán)是將其它的數(shù)進行類似 操作。

作業(yè)
使用簡單數(shù)組 (1)創(chuàng)建一個名為TestArray的類,在main()方法中聲明array1和array2兩個變量,他們是 int[]類型的數(shù)組。 (2)使用大括號{},把array1初始化為8個素數(shù):2,3,5,7,11,13,17,19。 (3)顯示array1的內容。 (4)賦值array2變量等于array1,修改array2中的偶索引元素,使其等于索引值(如array[0]=0,array[2]=2)。打印出array1。 思考:array1和array2是什么關系? 拓展:修改題目,實現(xiàn)array2對array1數(shù)組的復制

public class jiujiu {
    public static void main(String[] args){
        //九九乘法表   
            for(int i = 1; i <= 9; i++){
                for(int j = 1; j <=i; j++){
                    System.out.print(i + "*" + j + "=" + (i*j)+"\t");                
                }
                System.out.println();            
            }
        }    
}
public class ZhiShu {
    public static void main(String[] args){
        int cou = 0;
        for(int i = 1; i <= 100; i++){
            int count = 0;
            for(int j = 1; j <= i; j++){
                if(i%j == 0){
                    count++;
                }}
            
        if(count == 2){
            System.out.println(i);
            cou++;
            }    
        } 
      System.out.println("質數(shù)的數(shù)量是"+cou);    
    }    
}
public static void main(String[] args){
       //輸出所有的水仙花數(shù),所謂水仙花數(shù)是指一個3位數(shù),其各個位上數(shù)字立方和等于其本身。
       //例如: 153 = 1*1*1 + 3*3*3 + 5*5*5 
       int count =0;
       System.out.print("水仙花數(shù)有:");
       for(int i = 100; i <1000; i++){
           //數(shù)字x 
           //百位數(shù)是x/100
           //十位(x - a*100)/10;
          //個位x%10;
          //水仙花 x=(x/100)*(x/100)*(x/100)+((x - a*100)/10)*((x - a*100)/10)*((x - a*100)/10)+(x%10)*(x%10)*(x%10)          
          int a = i/100;
          int b = (i - a*100)/10;
          int c = i%10;
          
          //System.out.println(a+""+b+c);
          if(i == a*a*a + b*b*b + c*c*c){
              System.out.print(i+" ");
              count++;
          }          
       }
        System.out.println("\n"+"水仙花數(shù)的個數(shù)是:"+count);       
    }
public class Arr2 {
    public static void main(String[] args){
       
        //test();
       // copy();
       // rev();
       //pao();
       TestArray();
    
    }
    public static void test(){
        int[] arr = {4, 2, 7, 1, 3, 5};
        //求數(shù)組元素的最大值、最小值、總和、平均數(shù)
        int max = arr[0];
        int min = arr[0];
        int sum = 0;
        
        for(int i = 0; i <arr.length; i++){
            if(max < arr[i]){
                max = arr[i];   
            }
            if(min > arr[i]){
                min = arr[i];
            }
            sum += arr[i];
           }
            int avg = sum/(arr.length+1);
         System.out.println(max+" ,"+min+" ,"+sum+" ,"+avg);
    } 
    //復制
    public static void copy(){
        int[] arr = {4, 2, 7, 1, 3, 5};
        int[] copy = new int[arr.length];
        for(int i = 0; i < arr.length; i++){
            copy[i] = arr[i];
        }
        System.out.println(copy[2]);    
    }
    //反轉
    public static void rev(){
         int[] arr = {4, 2, 7, 1, 3, 5};
         int[] rev = new int[arr.length];
         int j = 0;
         for(int i = arr.length - 1; i >= 0; i--){
           rev[j] = arr[i];
           j++;
         }
         for(int i = 0; i < rev.length; i++){
             System.out.println(rev[i]);
         }

    }
    //冒泡
    public static void pao(){
        int[] arr = {4, 2, 17, 12, 322, 51};
        int cup = 0;
        for(int i = 0; i < arr.length - 1; i++){
            for(int j = 0; j < arr.length - 1 - i; j++){
                if(arr[j] > arr[j+1]){
                    cup = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = cup;
                
                }
            }
        }
        for(int i = 0; i < arr.length; i++){
            System.out.println(arr[i]);
        }
    }
    
    public static void TestArray(){
        //創(chuàng)建一個名為TestArray的類,聲明array1和array2兩個變量,他們是int[]類型的數(shù)組。
        //使用大括號{},把array1初始化為8個素數(shù):2,3,5,7,11,13,17,19。
        //顯示array1的內容
        //)賦值array2變量等于array1,修改array2中的偶索引元素,使其等于索引值(如 array[0] = 0,array[2] = 2)。打印出array1
        int[] array1 = {2, 3, 5, 7, 11, 13, 17, 19};
        int[] array2 = new int[]{};
        for(int i = 0; i < array1.length; i++){
            System.out.println(array1[i]);       
        }
        System.out.println();
        array2 = array1;
        for(int i = 0; i < array2.length; i++){
            if(i == 0){
                array2[0] = 0;
            }
            if(i % 2 == 0){
                array2[i] = i;
            }
        }
        for (int i = 0; i < array2.length; i++) {
            System.out.println(array2[i]);
        }
    }   
}

//注??:數(shù)組排序提到了插入排序 、交換排序、選擇排序 、歸并排序 、基數(shù)排序,但只講了交換排序中的冒泡排序,學完課程后建議搜索后深入了解。??

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容