# 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課堂學習` `複習用` `高科大`