天天看點

JavaSE-04 Struct文法結構JavaSE

JavaSE

四、Struct文法結構

  1. ShunXunDemo:順序結構
//順序結構就按順序呗
        public static void main(String[] args) {
            System.out.println("hello1");
            System.out.println("hello2");
            System.out.println("hello3");
        }
           
  1. 選擇結構

​ 2.1if結構

  • ifDemo1:if單選擇結構if
public static void main(String[] args) {
                Scanner scanner = new Scanner(System.in);
                System.out.println("請輸内容:");
                String s = scanner.nextLine();

                //equals:判斷字元串是否相等,不用"="
                if(s.equals("Hello")){
                    System.out.println(s);
                }

                System.out.println("End");
                scanner.close();
            }
           
  • ifDemo2:if的雙選擇結構if ...else
public static void main(String[] args) {
                //考試分數大于等于60是及格,小于60不及格
                Scanner scanner = new Scanner(System.in);
                System.out.println("請輸入成績:");

                int score = scanner.nextInt();

                if(score>=60){
                    System.out.println("及格");
                }else{
                    System.out.println("不及格");
                }

                scanner.close();
            }
           
  • ifDemo3:if多選擇結構if...else if...else
public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.println("請輸入成績:");

            int score = scanner.nextInt();

            if(score==100){
                System.out.println("恭喜,是滿分!");

            }else if (score <100 && score >= 90){
                System.out.println("A");
            }else if (score <90 && score >= 80){
                System.out.println("B");
            }else if (score <80 && score >= 70){
                System.out.println("C");
            }else if (score <70 && score >= 60){
                System.out.println("D");
            }else if (score <60 && score >= 0){
                System.out.println("A");
            } else {
                System.out.println("成績不合法");
            }
			 scanner.close();
        }    
        /*
        1、分數的不在0-100的也要考慮,為不合法,寫程式的時候就要想到所有的情況,不然後續修改bug很麻煩
        2、隻要滿足了一個else if,其他的else if就不執行了
         */
           

​ 2.2Switch結構

  • SwitchDemo1:多選擇結構
public static void main(String[] args) {
            //case 穿透現象  swith 比對一個值

            char grade = 'A';

            switch(grade){
                case 'A':
                    System.out.println("優秀");
                    break;//不寫break就會把後面的全部輸出來,最好都加上
                case 'B':
                    System.out.println("良好");
                    break;
                case 'C':
                    System.out.println("及格");
                    break;
                case 'D':
                    System.out.println("再接再厲");
                    break;
                case 'E':
                    System.out.println("沒救了");
                    break;
                default:
                    System.out.println("未知等級");
            }
        }
            /*
            文法:switch(expression){
                    case value://記得是冒号!!
                    執行語句;
                    break;

                    case value:
                    執行語句;
                    break;

                    default:
                    執行語句;
             */
           
  • SwitchDemo2:反編譯
public static void main(String[] args) {
            String name = "fenfen";
            //jdk7才支援的新特征,表達式結果可以是字元串

            //反編譯  java--class(位元組碼檔案)
            switch (name){
                case "yueyue":
                    System.out.println("yueyue");
                    break;
                case"fenfen":
                    System.out.println("fenfen");
                    break;
                default:
                    System.out.println("做咩啊");

            }
            /*反編譯操作方式:
            把out裡面的class檔案利用idea複制到src裡面就是可以看到反編譯的檔案了,字尾是class
            發現switch中反編譯後:switch是通過hashCode()和equals去查找中文對應的哈希值看下匹不比對
             */
        }
		//反編譯源碼
         public static void main(String[] args) {
            String name = "fenfen";
            byte var3 = -1;
            switch(name.hashCode()) {
            case -1278140000:
                if (name.equals("fenfen")) {
                    var3 = 1;
                }
                break;
           
  1. 循環結構

​ 3.1while結構

  • WhileDemo1:基本while文法
public static void main(String[] args) {
            //輸出1-100
            int i = 0;
            while (i<100){
                i = i+1;
                System.out.println(i);
            }
        }
           
  • WhileDemo2:死循環
public static void main(String[] args) {
            while(true){
                /*死循環
                一般用在等待用戶端連接配接
                伺服器監聽響應
                定時檢查任務
                 */
            }
        }
           
  • WhileDemo3:寫一個1+2+...+100的等差數列求和
public static void main(String[] args) {
            //計算1+2+3+...+100

            int i =0;
            int sum = 0;
            while (i<=100){
                sum =sum+i;
                i = i+1;

            }
            System.out.println(sum);
        }
           

​ 3.2DoWhile結構

  • DoWhileDemo2:while和dowhile的差別
public static void main(String[] args) {
            //用while:不會輸出a,直接不走循環了
            int a = 0;
            while(a<0){
                System.out.println(a);
                a++;
            }
            System.out.println("=======================");

            //用dowhile:輸出a=0,至少走一次循環
            do{
                System.out.println(a);
                a++;
            }while(a<0);
        }
           

​ 3.3For結構

  • ForDemo1:基本for寫法(和while比較)
public static void main(String[] args) {

            int a = 1;//初始化條件
            while(a<100){//條件判斷
                System.out.println(a);//循環體
                a+=1;//疊代
            }
            System.out.println("while循環結束");

            //for (初始值,布爾值,更新),即初始化、條件判斷、疊代
            for(int i = 1;i<100;i++){//快捷鍵:100.for加上tab鍵
                System.out.println(i);
            }
        }
           
  • ForDemo2:寫個100以内的奇數和偶數的和
public static void main(String[] args) {

            int oddSum = 0;//定義奇數的和
            int evenSum = 0;//定義偶數的和

            for (int i = 0; i <= 100; i++) {
                if(i%2!=0){//用模運算
                    oddSum+=i;
                }else{
                    evenSum+=i;
                }
            }
            System.out.println("奇數的和:"+oddSum);
            System.out.println("偶數的和:"+evenSum);
        }
		//for搭配if...else一起寫
           
  • ForDemo3:寫個輸出1-1000之間能被5整數的數,并且每行輸出3個
public static void main(String[] args) {

            for (int i = 0; i <= 1000; i++) {
                if(i%5==0){
                    System.out.print(i+"\t");
                }

                if(i%(5*3)==0){
                    System.out.print("\n");//或者System.out.println();
                }

                //printin 輸出會換行
                //print 輸出不會換行
            }
        }
           
  • ForDeom4:寫個九九乘法表
public static void main(String[] args) {
               /*
                1*1=1
                2*1=2    2*2=4
                3*1=3    3*2=6    3*3=9
                4*1=4    4*2=8    4*3=12    4*4=16
                5*1=5    5*2=10    5*3=15    5*4=20    5*5=25
                6*1=6    6*2=12    6*3=18    6*4=24    6*5=30    6*6=36
                7*1=7    7*2=14    7*3=21    7*4=28    7*5=35    7*6=42    7*7=49
                8*1=8    8*2=16    8*3=24    8*4=32    8*5=40    8*6=48    8*7=56    8*8=64
                9*1=9    9*2=18    9*3=27    9*4=36    9*5=45    9*6=54    9*7=63    9*8=72    9*9=81
                 */


                for (int i = 1; i <= 9; i++) {
                    for (int j = 1; i>=j; j++) {
                            System.out.print(i + "*" + j +"="+(i*j)+"\t");
                        }
                    System.out.println();
                    }
                }
                 /*
                總結:
                ①兩層for循環
                ②内循環中i>=j的限制
                ③内循環完後換行sout的使用
                 */
            }
           
  • ForDeom5:在周遊數組和集合上的使用
public static void main(String[] args) {
            //①普通寫法
            int[] numbers = {10,20,30,40,50};//定義了一個數組


            for (int i =0;i<5;i++){
                System.out.println(numbers[i]);
            }
            System.out.println("========================");

            //②指針抽象一點的寫法:周遊數組中的元素
            for (int x:numbers){//x是内置的一個指針
                System.out.println(x);
            }
        }
           
  1. break、continue
  • BreakDemo:break基本用法
public static void main(String[] args) {
            int i =0;
            while(i<100) {
                i++;
                System.out.println(i);
                if (i == 30) {
                    break;//30後面就不幹了,跳出這個循環
                }
            }
                System.out.println("123");

        }
           
  • ContinueDemo:continue基本用法
public static void main(String[] args) {
            int i =0;
            while (i<100){
                i++;
                if(i%10==0){
                    System.out.println();
                    continue;//立馬會跳到循環最開始的地方,終止某次循環,後面的這一程式不執行
                }
                System.out.print(i);
            }
         }
           
  • LabelDemo:标簽的用法
public static void main(String[] args) {
            //列印101-150之間所有的質數
            int count = 0;

            outer:for(int i = 101;i<150;i++){   //outer是标簽
                for(int j = 2;j<i/2;j++){
                    if(i%j==0){
                        continue outer;//傳回到标簽的位置,可以跳到指定循環處,不一定就跳出這個循環而已
                    }
                }
                System.out.print(i+" ");
            }
        }