# Java第七週[JPA210~302 switch判斷、for迴圈、charAt函數、找因數] #### 複習用 ## 開始解題(JPA210~302): ### 第一題(JPA210)-鍵盤字元判斷[switch判斷用法]: #### Switch用法( 多選一,VB的Select case ) ```java=1 switch(x) { case '字元': case '字元': //多個判斷 break; //強制跳出 case 'a': //單一判斷 字元 break; //強制跳出 case 3: //單一判斷 數值 break; //強制跳出 default: //最後判斷 (其他選項) } ``` * 注意: switch 敘述有一個很大的使用限制。 switch 敘述括號裡的運算式,**只能是byte、char、short、int**這四種型態之一。 其它型態不可用。 #### keyboard.next() VS keyboard.nextLine() ```java=1 keyboard.next() //無限制,可以打無限多個字串 keyboard.nextLine() //有特別限制,只能打一個字串 ``` #### 字串處理函數 charAt() [指定字元、切字元] 只抓字串中的某一字元 ```java=1 char a="abcde"; //用陣列方式儲存(索引值) a.charAt(0)='a' //a[0] a.charAt(1)='b' //a[1] a.charAt(2)='c' //a[2] a.charAt(3)='d' //a[3] a.charAt(4)='e' //a[4] ``` ![](https://i.imgur.com/RH7X1SL.png) 解答: ```java import java.util.*; class JPA210 { static Scanner keyboard = new Scanner(System.in); public static void main(String[] args) { test(); test(); test(); test(); test(); } public static void test() { System.out.println("Input a character:"); char c=keyboard.next().charAt(0); //宣告一個字元,名稱為c //keyboard.next()代表要求使用者輸入一個字串 //老師出題 char a=keyboard.next().charAt(4); //輸入abcde抓e (結果沒有) //輸入abcab抓b (a or b) switch(c) //多選一 { case 'a': //'a' 代表一個字元'' case 'b': System.out.println("You entered a or b"); break; //整個switch結束(強制跳出) case 'x': System.out.println("You entered x"); break; case 'y': System.out.println("You entered y"); break; default: //其他選項 System.out.println("You entered something else."); } } } ``` --- ### 第二題(JPA301)-整數連加[for迴圈運用(累加)]: #### 累次 VS 累加 ```java=1 sum=sum+i; //累加 sum+=i; sum=sum+1; //累次 sum+=1; sum++; ``` ![](https://i.imgur.com/Y5TiwDW.png) 解答: ```java import java.util.*; class JPA301 { public static void main(String argv[]) { Scanner keyboard=new Scanner(System.in); System.out.println("Input:"); int n=keyboard.nextInt(); //輸入88 int sum=0; for (int i=1;i<=n;i++) //java特殊寫法(int可寫在for迴圈裡面) { sum+=i; //sum=sum+i; 累加 } System.out.println("1 + ... + "+n+" = "+sum); } //題目強制要求用println,用 + 串接 } ``` --- ### 第三題(JPA302)-巢狀迴圈[雙for迴圈運用]: * 9次*3圈=27 ![](https://i.imgur.com/6Yq8ZPz.png) 解答: ```java import java.util.Scanner; public class JPA302 { public static void main(String[] args) { int i = 1, j = 1, count = 0; for(i=1;i<=3;i++) //第一個迴圈,i從1到3 { for(j=1;j<=9;j++) //第二個迴圈,j從1到9 { count++; //count+=1; } } System.out.printf("count = %d\n", count); } } ``` --- ### 第四題(額外老師出題)-[找a、b各自因數,並找共同因數]: ![](https://i.imgur.com/wgJERcg.jpg) 解答: ```java import java.util.*; public class JPA01 { public static void main(String[]args) { Scanner keyboard=new Scanner(System.in); System.out.println("請輸入兩個整數:"); int a=keyboard.nextInt(); int b=keyboard.nextInt(); fun(a); //用函數處理,不用多寫程式碼 fun(b); int i; if(a>b) //共同的因數做法 { for(i=1;i<=a;i++) { if((a%i==0)&&(b%i==0)) { System.out.printf("%d和%d共同的因數有%d\n",a,b,i); } } } else if(a<b) { for(i=1;i<=b;i++) { if((a%i==0)&&(b%i==0)) { System.out.printf("%d和%d共同的因數有%d\n",a,b,i); } } } } static void fun(int n) { int sum=0,count=0; for(int i=1;i<=n;i++) { if(n%i==0) { count++; //a的因數有幾個 sum=i; //sum=該因數 System.out.printf("%d的因數有 %d",n,sum); System.out.printf("\n"); } } } } ``` --- 最後編輯時間:2021/4/11 3:42pm. ###### tags: `JAVA課堂學習` `複習用` `高科大`