---
# System prepended metadata

title: Java第12週 ==額外題==
tags: [複習用, JAVA課堂學習, 高科大]

---

# Java第12週 ==額外題==
#### 複習用

## 開始解題
>額外題延伸-==**二維迴圈**的運用==


### 第一題
### <font color=#984B4B>分別列出 學生各科成績+計算 各學生、各科 平均值:</font>
>使用 **二維陣列**+**雙重for**迴圈

### 📌題目:
#### 宣告一個二維陣列，5列3行，要求使用者輸入5個學生3個科目的成績，
#### 列出整個陣列內容，並計算每位學生的平均成績、每個科目的平均成績


### <font color="##EE7700">💡簡化題目步驟
### 五個學生，三個科目
**1. ==分別輸入==並==列出各學生各科成績==
2. 計算出 各學生 成績平均 (輸出結果第四行)
3. 計算出 各科 成績平均 (輸出結果第六列)**

</font>

![](https://i.imgur.com/t2Ylp8B.png)

:::spoiler **舊解答**
```java
import java.util.Scanner;
public class JPA051
{	
	static Scanner keyboard=new Scanner(System.in);
	public static void main(String args[])
	{
		int[][] score=new int[5][3];	//陣列宣告在外

		for(int i=0;i<5;i++)	//輸入score[i][j]
		{
			System.out.printf("請輸入第%d個學生\n",i+1);
			for(int j=0;j<3;j++)
			{
				System.out.printf("第%d個科目",j+1);	
				score[i][j]=keyboard.nextInt();//將值一個一個輸入
			}	
		}

		int sum=0;
		for(int i=0;i<5;i++)	//計算並輸出矩陣
		{
			sum=0;		//總和要清為0(代表每一位學生的平均)
			for(int j=0;j<3;j++)
			{
				System.out.printf("%d ",score[i][j]); //00 01 02
				sum+=score[i][j];
			}
			System.out.printf("%d ",sum/3); //多放一個(在04位子)
			System.out.printf("\n");	
		}	
		
		int avg=0;
		for(int j=0;j<3;j++)	//計算並輸出矩陣
               {
			avg=0;        //要清為0(代表每一個科目的平均)
			for(int i=0;i<5;i++)
			{
				avg+=score[i][j];	//五位學生總和
			}
			System.out.printf("%d ",avg/5);
		}	
		System.out.printf("\n");
	}
}
```
:::
<br>

**:paperclip: 新解答:**
```java
import java.util.Scanner;
public class JPA0501
{
	static Scanner keyboard=new Scanner(System.in);
	public static void main(String args[])
	{
		int [][]score=new int[5][3];
		
		for(int i=0;i<5;i++)			//1.輸入
		{
			System.out.println("請輸入第"+(i+1)+"個學生");
			for(int j=0;j<3;j++)
			{
				System.out.print("第"+(j+1)+"個科目 ");
				score[i][j]=keyboard.nextInt();
			}

		}
		System.out.printf("\n");
		
		int stuAvg=0;				//1.列出所有、2.stuAvg
		for(int i=0;i<5;i++)
		{
			stuAvg=0;
			for(int j=0;j<3;j++)
			{
				System.out.printf("%d ",score[i][j]);
				stuAvg+=score[i][j];
			}
			System.out.printf("%d",stuAvg/3);
			System.out.printf("\n");
		}
		
		int subjectAvg=0;			//3.subjectAvg
		for(int j=0;j<3;j++)
		{
			subjectAvg=0;
			for(int i=0;i<5;i++)
			{
				subjectAvg+=score[i][j];
			}
			System.out.printf("%d ",subjectAvg/5);
		}
		System.out.printf("\n");
	}
}
```

---
### 第二題
### ==額外題 延伸1==
>使用 **二維陣列**+**雙重for**迴圈+**if判斷**
### 📌題目:
#### <font color=#984B4B>列出 每位學生 各有幾個科目及格、每個科目 各有幾個學生及格</font>

### <font color="##EE7700">💡簡化題目步驟
**1. ==分別輸入==並==列出各學生各科成績==
2. 列出每位學生各有［幾個］科目及格
3. 每個科目各有［幾個］學生及格**

</font>

:::spoiler **舊解答**
```java
import java.util.Scanner;
public class JPA052
{
	static Scanner keyboard=new Scanner(System.in);
	public static void main(String args[])
	{
		int[][] score=new int [5][3];
		
		for(int i=0;i<5;i++)
		{
			System.out.printf("請輸入第%d個學生\n",i+1);
			for(int j=0;j<3;j++)
			{
				System.out.printf("第%d個科目",j+1);
				score[i][j]=keyboard.nextInt();	
			}
		}

		int sum=0;
		for(int i=0;i<5;i++)
		{
			sum=0;
			for(int j=0;j<3;j++)
			{
				System.out.print(score[i][j]+" ");
				sum+=score[i][j];	
			}
			
			System.out.print(sum/3);
			System.out.printf("\n");
		}
		
		int avg=0;
		for(int j=0;j<3;j++)
		{
			avg=0;
			for(int i=0;i<5;i++)
			{
				avg+=score[i][j];	
			}
			System.out.print(avg/5+" ");
		}
		System.out.print("\n");
		
		int count=0;
		for(int i=0;i<5;i++)
		{
			count=0;
			for(int j=0;j<3;j++)
			{
				if(score[i][j]>=60)
				{
					count++;
				}
			}
			System.out.printf("第%d個學生 有%d個科目及格\n",i+1,count);
		}

		int count2=0;
		for(int j=0;j<3;j++)
		{
			count2=0;
			for(int i=0;i<5;i++)
			{
				if(score[i][j]>=60)
				{
					count2++;
				}
			}
			System.out.printf("第%d個科目 有%d個學生及格\n",j+1,count2);
		}
	}
}
```
:::
<br>

**:paperclip: 新解答:**
```java
import java.util.Scanner;
public class JPA0502
{
	static Scanner keyboard=new Scanner(System.in);
	public static void main(String args[])
	{
		int [][]score=new int[5][3];
		
		for(int i=0;i<5;i++)			//1.輸入
		{
			System.out.println("請輸入第"+(i+1)+"個學生");
			for(int j=0;j<3;j++)
			{
				System.out.print("第"+(j+1)+"個科目 ");
				score[i][j]=keyboard.nextInt();
			}

		}
		System.out.printf("\n");

		int scorePass=0;
		for(int i=0;i<5;i++)			//1.列出所有
		{
			scorePass=0;
			for(int j=0;j<3;j++)
			{
				System.out.printf("%d ",score[i][j]);
				
				if(score[i][j]>=60)
				{
					scorePass++;
				}
			}
			System.out.printf("\n");
		}
		System.out.printf("\n");
		
		for(int i=0;i<5;i++)
		{
			System.out.printf("第%d位學生各有%d個科目及格\n",i+1,scorePass);
		}
		System.out.printf("\n");

		int stuPass=0;
		for(int j=0;j<3;j++)
		{
			stuPass=0;
			for(int i=0;i<5;i++)
			{
				if(score[i][j]>=60)
				{
					stuPass++;
				}
			}
			System.out.printf("第%d個科目各有%d個及格學生\n",j+1,stuPass);
		}
	}
}
```
---
### 第三題
### ==額外題延伸2==
>使用 **二維陣列**+**雙重for**迴圈+**if判斷**
### 📌題目:
#### <font color=#984B4B>列出 每位學生哪些科目及格、每個科目哪些學生及格（代碼）</font>

### <font color="##EE7700">💡簡化題目步驟
**1. ==分別輸入==並==列出各學生各科成績==
2. 列出每位學生［哪些］科目及格
3. 每個科目［哪些］學生及格**

</font>

:::spoiler **舊解答**
```java
import java.util.Scanner;
public class JPA053
{
	static Scanner keyboard=new Scanner(System.in);
	public static void main(String args[])
	{
		int[][] score=new int [5][3];
		
		for(int i=0;i<5;i++)
		{
			System.out.printf("請輸入第%d個學生\n",i+1);
			for(int j=0;j<3;j++)
			{
				System.out.printf("第%d個科目",j+1);
				score[i][j]=keyboard.nextInt();	
			}
		}

		int sum=0;
		for(int i=0;i<5;i++)
		{
			sum=0;
			for(int j=0;j<3;j++)
			{
				System.out.print(score[i][j]+" ");
				sum+=score[i][j];	
			}
			
			System.out.print(sum/3);
			System.out.printf("\n");
		}
		
		int avg=0;
		for(int j=0;j<3;j++)
		{
			avg=0;
			for(int i=0;i<5;i++)
			{
				avg+=score[i][j];	
			}
			System.out.print(avg/5+" ");
		}
		System.out.print("\n");
		
		int count=0;
		for(int i=0;i<5;i++)
		{
			count=0;
			for(int j=0;j<3;j++)
			{
				if(score[i][j]>=60)
				{
					count++;
				}
			}
			System.out.printf("第%d個學生 有%d個科目及格\n",i+1,count);
		}

		int count2=0;
		for(int j=0;j<3;j++)
		{
			count2=0;
			for(int i=0;i<5;i++)
			{
				if(score[i][j]>=60)
				{
					count2++;
				}
			}
			System.out.printf("第%d個科目 有%d個學生及格\n",j+1,count2);
		}
		System.out.printf("\n");
		
		for(int i=0;i<5;i++)
		{
			System.out.printf("第%d個學生及格的有:\n",i+1);
			for(int j=0;j<3;j++)
			{
				if(score[i][j]>=60)
				{
					System.out.printf("第%d個科目 ",j+1);
				}
			}
			System.out.printf("\n");
		}
		System.out.printf("\n");
	
		for(int j=0;j<3;j++)
		{
			System.out.printf("第%d個科目及格的有:\n",j+1);
			for(int i=0;i<5;i++)
			{
				if(score[i][j]>=60)
				{
					System.out.printf("第%d個學生 ",i+1);
				}
			}
			System.out.printf("\n");
		}
	}
}
```
:::
<br>

**:paperclip: 新解答:**
```java
import java.util.Scanner;
public class JPA0503
{
	static Scanner keyboard=new Scanner(System.in);
	public static void main(String args[])
	{
		int [][]score=new int[5][3];
		
		for(int i=0;i<5;i++)			//1.輸入
		{
			System.out.println("請輸入第"+(i+1)+"個學生");
			for(int j=0;j<3;j++)
			{
				System.out.print("第"+(j+1)+"個科目 ");
				score[i][j]=keyboard.nextInt();
			}

		}
		System.out.printf("\n");

		for(int i=0;i<5;i++)			//1.列出所有
		{
			for(int j=0;j<3;j++)
			{
				System.out.printf("%d ",score[i][j]);
			}
			System.out.printf("\n");
		}
		System.out.printf("\n");
		
		for(int i=0;i<5;i++)
		{
			System.out.printf("第%d位學生有:\n",i+1);
			for(int j=0;j<3;j++)
			{
				if(score[i][j]>=60)
				{
					System.out.printf("第%d個科目及格\n",j+1);
				}
			}
			System.out.printf("\n");
		}
		System.out.printf("\n");

		for(int j=0;j<3;j++)
		{
			System.out.printf("第%d個科目有:\n",j+1);
			for(int i=0;i<5;i++)
			{
				if(score[i][j]>=60)
				{
					System.out.printf("第%d位學生及格\n",i+1);
				}
			}
			System.out.printf("\n");
		}
	}
}
```

---
### 第四題
### ==額外題延伸3==
>使用 **二維陣列**+**雙重for**迴圈+**if判斷**+**max、min覆蓋**
### 📌題目:
#### <font color=#984B4B>列出 每位學生的最高分科目與分數、每個科目的最高分是誰?幾分?</font>

### <font color="##EE7700">💡簡化題目步驟
**1. ==分別輸入==並==列出各學生各科成績==
2. 列出每位學生［最高分科目與分數］
3. 每個科目［最高分是誰?幾分?］**

</font>

:::spoiler **舊解答**
```java
import java.util.Scanner;
public class JPA054
{
	static Scanner keyboard=new Scanner(System.in);
	public static void main(String args[])
	{
		int[][] score=new int [5][3];
		
		for(int i=0;i<5;i++)
		{
			System.out.printf("請輸入第%d個學生\n",i+1);
			for(int j=0;j<3;j++)
			{
				System.out.printf("第%d個科目",j+1);
				score[i][j]=keyboard.nextInt();	
			}
		}

		int sum=0;
		for(int i=0;i<5;i++)
		{
			sum=0;
			for(int j=0;j<3;j++)
			{
				System.out.print(score[i][j]+" ");
				sum+=score[i][j];	
			}
			
			System.out.print(sum/3);
			System.out.printf("\n");
		}
		
		int avg=0;
		for(int j=0;j<3;j++)
		{
			avg=0;
			for(int i=0;i<5;i++)
			{
				avg+=score[i][j];	
			}
			System.out.print(avg/5+" ");
		}
		System.out.print("\n");
		
		int count=0;
		for(int i=0;i<5;i++)
		{
			count=0;
			for(int j=0;j<3;j++)
			{
				if(score[i][j]>=60)
				{
					count++;
				}
			}
			System.out.printf("第%d個學生 有%d個科目及格\n",i+1,count);
		}

		int count2=0;
		for(int j=0;j<3;j++)
		{
			count2=0;
			for(int i=0;i<5;i++)
			{
				if(score[i][j]>=60)
				{
					count2++;
				}
			}
			System.out.printf("第%d個科目 有%d個學生及格\n",j+1,count2);
		}
		System.out.printf("\n");
		
		for(int i=0;i<5;i++)
		{
			System.out.printf("第%d個學生及格的有:\n",i+1);
			for(int j=0;j<3;j++)
			{
				if(score[i][j]>=60)
				{
					System.out.printf("第%d個科目 ",j+1);
				}
			}
			System.out.printf("\n");
		}
		System.out.printf("\n");
	
		for(int j=0;j<3;j++)
		{
			System.out.printf("第%d個科目及格的有:\n",j+1);
			for(int i=0;i<5;i++)
			{
				if(score[i][j]>=60)
				{
					System.out.printf("第%d個學生 ",i+1);
				}
			}
			System.out.printf("\n");
		}
		System.out.printf("\n");

		int max=0,index=0;
		for(int i=0;i<5;i++)
		{
			max=0;
			index=0;
			System.out.printf("第%d個學生最高分科目與成績有:\n",i+1);
			for(int j=0;j<3;j++)
			{
				if(score[i][j]>max)
				{
					max=score[i][j];
					index=j;
				}	
			}
			System.out.printf("第%d個科目:%d",index+1,max);
			System.out.printf("\n");
		}
		System.out.printf("\n");

		int max2=0,index2=0;
		for(int j=0;j<3;j++)
		{
			max2=0;
			index2=0;
			System.out.printf("第%d個科目最高分學生與成績有:\n",j+1);
			for(int i=0;i<5;i++)
			{
				if(score[i][j]>max2)
				{
					max2=score[i][j];
					index2=i;
				}
			}
			System.out.printf("第%d個學生:%d",index2+1,max2);
			System.out.printf("\n");
		}
		System.out.printf("\n");
	}
}
```
:::
<br>

**:paperclip: 新解答:**
```java
import java.util.Scanner;
public class JPA0504
{
	static Scanner keyboard=new Scanner(System.in);
	public static void main(String args[])
	{
		int [][]score=new int[5][3];
		
		for(int i=0;i<5;i++)			//1.輸入
		{
			System.out.println("請輸入第"+(i+1)+"個學生");
			for(int j=0;j<3;j++)
			{
				System.out.print("第"+(j+1)+"個科目 ");
				score[i][j]=keyboard.nextInt();
			}

		}
		System.out.printf("\n");

		for(int i=0;i<5;i++)			//1.列出所有
		{
			for(int j=0;j<3;j++)
			{
				System.out.printf("%d ",score[i][j]);
			}
			System.out.printf("\n");
		}
		System.out.printf("\n");
		
		int maxSubject=0,subjectScore=0;
		for(int i=0;i<5;i++)
		{
			maxSubject=0;
			subjectScore=0;
			System.out.printf("第%d位學生最高分為:\n",i+1);
			for(int j=0;j<3;j++)
			{
				if(score[i][j]>subjectScore)
				{
					maxSubject=j+1;
					subjectScore=score[i][j];
				}
			}
			System.out.printf("第%d個科目 分數%d分\n",maxSubject,subjectScore);
			System.out.printf("\n");
		}
		System.out.printf("\n");
		
		int maxStu=0,stuScore=0;
		for(int j=0;j<3;j++)
		{	
			maxStu=0;
			stuScore=0;
			System.out.printf("第%d個科目最高分為:\n",j+1);
			for(int i=0;i<5;i++)
			{
				if(score[i][j]>=stuScore)
				{
					maxStu=i+1;
					stuScore=score[i][j];
				}
			}
			System.out.printf("第%d位學生 分數%d分\n",maxStu,stuScore);
			System.out.printf("\n");
		}
	}
}
```

---
:::spoiler 最後更新日期 
>第一次編輯[time=2021 5 14 , 12:05 AM]

>第二次編輯[time=2021 8 8 , 2:05 AM]

>最後一次編輯[time=2021 9 4 , 7:23 PM][color=#786ff7]
:::
###### tags: `JAVA課堂學習` `複習用` `高科大`