JavaSE複習鞏固

程式設計玩家1號發表於2021-12-01
第二天:複習if語句,掃描器,switch語句,迴圈語句
1.if語句---流程控制語句
if之前學的語句是順序結構
1.1 單個if的語法結構
if(條件判斷){
滿足條件需要做的事情;
}
int a=11;
if(a>1){
System.out.println("成功");
}
單個if語句的缺點:單個if語句都是相互獨立的,每一個單個的if語句他都會進行判斷,會消耗cpu的執行時間,降低執行效率。
1.2 if.....else語法結構
if(條件判斷){
滿足條件需要做的事情;
}else{
不滿足條件需要做的事情;
}
if....else存在的目的:
1.單個的if一次只能進行一個條件判斷,而if....else一次可以同時進行兩個條件判斷
2.if....else執行效率比單個的if語句要高些(當if中條件滿足時,else就不會再去消耗cpu的執行時間(也就是當if條件滿足時,else不會執行了))
 
1.3 多重if語句
if(條件判斷1){
滿足條件1要做的事情;
}else if(條件判斷2){
滿足條件2要做的事情;
}...
else if(條件判斷n){
滿足條件n要做的事情;
}else{
不滿足條件需要做的事情;
}
問題:多重if語句中的else能夠省略嗎?
在有返回值的方法中多重if的esle是不能省略的,其他情況可以省略
多重if語句當某個條件滿足時,後面的條件就不會執行了
 
1.4 if語句的巢狀(if語句中寫if語句)
 
2.掃描器(鍵盤錄入)
作用:從鍵盤中自己手動輸入資料,你需要什麼資料你自己通過鍵盤直接輸入即可。
使用掃描器的步驟:
1.匯入掃描器
import java.util.Scanner;
2.生成掃描器物件
Scanner scanner = new Scanner(System.in);
3.接收鍵盤輸入的資料
int a=scanner.nextInt();
 
例子:
Scanner scanner = new Scanner(System.in);
System.out.print("請輸入您的成績");
int a=scanner.nextInt();
if(a>=90&&a<=100){
System.out.println("優秀");
}else if (a>=60&&a<=89){
System.out.println("及格");
}else{
System.out.println("不及格");
}
 
3.switch選擇語句
語法結構
switch(變數){
case 變數值1:
變數等於變數值1時需要做的事情;
break;//退出整個程式
case 變數值2:
變數等於變數值3時需要做的事情;
break;
case 變數值3:
變數等於變數值3時需要做的事情;
break;
...
case 變數值n:
變數等於變數值n時需要做的事情;
default:
最終需要做的事情;
}
例子:
  System.out.println("請輸入星期數:");
        int a1=scanner.nextInt();
        switch (a1){
            case  1:
                System.out.println("星期一");
                 break;
            case  2:
                System.out.println("星期二");
                break;
            case  3:
                System.out.println("星期三");
                break;
            case  4:
                System.out.println("星期四");
                break;
            case  5:
                System.out.println("星期五");
                break;
                case  6:
                System.out.println("星期六");
                break;
            case  7:
                System.out.println("星期日");
                break;
            default:
                System.out.println("您輸入的資料有錯誤,請重新輸入");

 

switch注意細節:
1.每一個case代表的就是一種情況,case結束之後必須交break,否則會出現程式碼穿透現象。
2.變數的取值
在jdk1.5之前 只能取 byte short char int
jdk1.5 加了 列舉以及byte short char int的包裝類
在jdk1.7加了 String
3.case後面的break不能省略,否則會出現程式碼穿透現象
4. default位置是否可以發生變化的,default可以在switch語句中的任意位置,也可以省略
注意:如果不是放在末尾,則要加break,否則也會出現程式碼穿透現象
5.switch什麼時候結束?
1.碰到break
2.碰到 }
6.switch與多重if語句有什麼樣的區別?
多重if語句一般用於區間的判斷,switch一般用於選擇性判(變數對應具體的某一個值)
 
練習題:請從鍵盤輸入月份(1-12)數字,列印出對應的季節?
 
擴充套件:求三個數字中的最大值?
//三個數求其中最大的數字
int a=11;
int b=22;
int c=33;
int max=a;//首先假設a為最大值
if (b>max){//如果b大於最大數 這時候最大值是a
max=b;//把b的值賦值給max
}
if (c>max){//c大於最大值 這時候最大值是b
max=c;//把c的值賦值給max
}
System.out.println("最大值:"+max);
 
4.迴圈語句
迴圈含義:反覆做同一件事情 例如:圍著操場跑10圈....
迴圈的三要素:1.變數的初始化,2.條件判斷,3. 變數改變情況
 
4.1.while迴圈
語法結構:
1迴圈變數的初始化
while(2條件判斷){
迴圈體;
迴圈變數的改變;
}
細節:迴圈變數的改變是避免死迴圈的發生
例子:int a=0;
while(a<10){
System.out.println("這是"+a);
a++;
}
練習題:求0-100的偶數
//求0-100的偶數
        int i=0;
        while(i<=100){
            if (i%2==0){//求奇數的話就是i%2!=0就ok了
                System.out.println("0-100的偶數有:"+i);
            }
            i++;
        }
 
while迴圈結束之後,迴圈變數還能繼續使用嗎?答案:可以的
while迴圈的執行流程:
1. 迴圈變數的初始化---迴圈條件判斷---迴圈體---迴圈變數的改變
2.迴圈條件判斷---迴圈體---迴圈變數的改變
3.迴圈條件判斷---迴圈體---迴圈變數的改變
.....直到迴圈結束
 
4.2do...while迴圈
1迴圈變數的初始化
do{
迴圈體;
3迴圈變數的改變;
}while(2條件判斷);
 
do...while迴圈結束之後,迴圈變數還能繼續使用嗎?答:可以的
 
do while迴圈的執行流程:
1.迴圈變數的初始化----迴圈體-----迴圈變數的改變---迴圈條件的判斷
2. 迴圈體-----迴圈變數的改變---迴圈條件的判斷 * 3迴圈體-----迴圈變數的改變---迴圈條件的判斷
...直到迴圈結束
 
dowhile跟while迴圈相比有一個明顯的特點:
當初始化變數不滿足條件時,迴圈體也會執行一次(先斬後奏)
 
4.3for迴圈
語法結構:
for(1.變數初始化,2.條件判斷3.變數改變的情況){
迴圈體;
}
例子:for(int i=0;i<10;i++){
System.out.println("這是"+i);
}
for迴圈結束之後,迴圈變數還能繼續使用嗎?答:不可以的
因為for迴圈的迴圈變數的作用域(作用範圍)是區域性變數,迴圈變數的作用範圍只在這一對{ }中有效。
注意:for迴圈的迴圈變數在迴圈結束之後,會被垃圾回收器自動回收。節省記憶體空間。
 
for迴圈 執行流程:
1.迴圈變數的初始化---迴圈條件判斷-----迴圈體----變數的改變
2.迴圈條件判斷-----迴圈體----變數的改變
3.迴圈條件判斷-----迴圈體----變數的改變
...直到迴圈結束
 
while do..while for迴圈三者之間的區別:
1.while dowhile迴圈的迴圈變數在迴圈結束之後能夠繼續使用,而for迴圈在迴圈結束之後,迴圈變數被垃圾回收器自動清除了, 不能再繼續使用.
2.while for迴圈必須滿足條件才會執行迴圈體, 而dowhile迴圈就算不滿足條件,也會執行一次迴圈體。
 
練習題
 //求10000-99999之間的迴文數(例如12321就是一個迴文數) (for  if求)  for迴圈裡面巢狀if   條件;個位==萬位&&十位==千位
          int count=0;
        for (int i = 10000; i <99999 ; i++) {
            //先求出個位,十位和百位,千位,萬位
            int gw=i/1%10;
            int sw=i/10%10;
            int bw=i/100%10;
            int qw=i/1000%10;
            int ww=i/10000%10;
            if (gw==ww&&sw==qw){
                System.out.println("迴文數:"+i);
            }
        }
 //求100-999的水仙花數 (例如:1*1*1+5*5*5+3*3*3=153 這就是一個水仙花數)條件:百位*百位*百位+十位*十位*十位+個位*個位*個位=百十個
        for (int j = 100; j <1000 ; j++) {
            //先求出個位,十位和百位
            int gw=j/1%10;
            int sw=j/10%10;
            int bw=j/100%10;
            //條件判斷
            if(gw*gw*gw+sw*sw*sw+bw*bw*bw==j){
                System.out.println("水仙花數:"+j);
            }
        }
 //求1900-2021中的閏年 例如:year%4==0&&year%100!=0||year%400==0時,這個就是閏年
        for (int year=1900;year<=2021;year++){
            if(year%4==0&&year%100!=0||year%400==0){
                System.out.println("閏年:"+year);
            }
        }

 

巢狀for迴圈(for迴圈裡面巢狀for迴圈)
外迴圈和內迴圈之間有什麼關係?
沒執行一次外迴圈,內迴圈要執行完。
 練習題:列印九九乘法表
    //列印九九乘法表
        //外層控制行數
        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();
        }

 

擴充套件知識:累加思想

習題:求0-100的總和

 1   //累加思想  例題:求1-100的和
 2         int sum=0;
 3         for (int k = 1; k <=100 ; k++) {
 4             sum+=k;//sum=sum+k 第一次: sum=0+1 第二次:sum=1 sum=1+2 第三次:sum=3 sum=3+3 以此類推....
 5         }
 6         System.out.println("sum="+sum);
 7         double sum1=0;
 8         for (int i = 1; i <=10 ; i++) {
 9             sum1+=1.0/i;
10 //            sum1=sum1+1.0/i;
11         }
12         System.out.println("sum1="+sum1);

 

綜合練習:在控制檯迴圈輸入五個學生的成績,求其最大值,最小值和總和?

 1  //迴圈輸入5個學生的成績,求其最大值,最小值以及總成績?
 2         int max=0;
 3         int min=100;
 4         int sum=0;
 5         Scanner sc = new Scanner(System.in);
 6         for (int i = 1; i <=5 ; i++) {
 7             System.out.println("請輸入第"+i+"個學生成績:");
 8             int j = sc.nextInt();
 9             if (max<j){
10                 max=j;
11             }
12             if (j<min){
13                 min=j;
14             }
15             sum+=j;
16         }
17         System.out.println("最大值:"+max);
18         System.out.println("最小值:"+min);
19         System.out.println("sum="+sum);

 

5.隨機器:Random
作用:用來產生隨機數的
如何使用隨機器產生隨機數(三個步驟)
1.匯入隨機器
import java.util.Random;
2.生成隨機器物件
Random rd=new Random();
//程式中真正用到隨機器 rd
3.產生隨機數
int a=rd.nextInt();
 
學習感受:今天是複習JavaSE的第二天,JavaSE基礎部分我打算複習15天左右的時間,學習Java技術這條路真的很難很累,學的內容很多,尤其是你只有一個人之間學習的時候,如果你能找到能跟你志同道合和一起學習java的小夥伴那是極好的,可以跟小夥伴再一起學習,交流,分享心得等等......希望自己不要方向這條路,既然自己選擇了這條路,就要堅定的走下去,那怕頭破血流,當然這說的有些誇張,但是這種決心還是要有的,畢竟是自己選擇的。走出來選擇就去堅持把,加油!!!一起去學Java的小夥伴。最後想送一句我很喜歡的名言:路漫漫其修遠兮,吾將上下而求索。
 

相關文章