---
# System prepended metadata

title: 'Java第二週[JPA101~103 基本架構解釋，開始解題、輸入輸出運用、final常數、double計算_浮點數除法]'
tags: [複習用, JAVA課堂學習, 高科大]

---

# Java第二週[JPA101~103 基本架構解釋，開始解題、輸入輸出運用、final常數、double計算_浮點數除法]

#### 複習用

### 基本架構詳細解釋:
```java=1
public class JPA01  
{
    public static void main(String[] args)
    {
        //打程式的部分
    }
}
```
`class`用來定義類別，而`JPA01`為類別名稱，
必須將**檔名也改為相同名稱**，否則檔案將無法執行。

看到第三行
`static`代表**永遠吃掉某塊記憶體，不會消失**

`void`表示main執行結束後，**不傳回任何值**

`String[] args`是命令列引數（Command line argument）
可以在執行程式時**取得使用者指定的相關參數**

`args`只是個參數名稱，可以隨意命名
也可以寫成`String args[] //定義陣列`，這是彷造C語言的語法
但Java中偏好的寫法為`String[] args //定義一個字串`。

(後面會學到進階的使用方法)

---

## 開始講解題目:
先到[高科教學平台](https://elearning.nkust.edu.tw/mooc/index.php)下載題目
(限高科大學生下載檔案使用)
下載第一個壓縮檔JP1.rar，名為[題庫1]

* 免費壓縮軟體:[bandizip](https://www.bandisoft.com/bandizip/)
(若主機無法解壓縮rar檔案，可以下載此軟體)
![](https://i.imgur.com/yZbtGgF.png)
對JP1 **按右鍵** 就能解壓縮

---
![](https://i.imgur.com/GrwY5SN.png)
* JPA01.class為 **執行檔**
* JPA01為 **正解**
* JPD01為 **錯誤更正檔** (修改程式或打程式，**都從此檔編譯**)

---
### 第一題(JPA01)-改錯誤:
![](https://i.imgur.com/A9pFpr7.png)
* 請依照**2.設計說明**去修改程式碼
* 同時確認自己解答是不是跟**3.執行結果參考畫面**一樣

錯誤(JPD01):
```java=1
public class JPD01 
{
    public static main(String args[]) 
    {
        System.out.println(I love Java!);
        System.out.println("Java is so good！")
    }
}
```
1.改為`JPA01`
2.少了`void` =>`public static void main(String args[])`
3.少了`""`=>`System.out.println("I love Java!");`
4.少了`;`=>`System.out.println("Java is so good！");`

正解:
```java
public class JPA01 
{
    public static void main(String args[])
    {
        System.out.println("I love Java!");
        System.out.println("Java is so good!");
    }
}
```
---

### 第二題:(解釋輸出不同格式的方法、引用插件工具箱)

#### 浮點數的差別(float V.S double)
對程式設計人員來說，double 和 float 的區別是
double精度高，有效數字16位，float精度7位
但double消耗記憶體是float的兩倍，double的運算速度比float慢得多
java語言中數學函式名稱double 和 float不同，不要寫錯
能用單精度時不要用雙精度(以省記憶體,加快運算速度)
|         | Float | Double |
| --------|------|------|
| 精度     | 低(7位)| 高(16位)|
| 消耗記憶體| 一倍   | 兩倍    |
| 運算速度 | 快   | 慢    |

```java
float a=3.14f; //java特殊用法，使用float，必須在數值後面加上f或F
double b=3.14; //double則不用
```
* TQC題組大多都用double居多，所以後期**看到浮點數都一律用double**

#### 不同格式的輸出(4種)
```java=1
int a=10; float b=5.9;
System.out.print("無跳行");
System.out.println("加入跳行");    //加ln為跳行
System.out.printf("a=%d b=%f\n",a,b); //用C++一樣的方法
System.out.println(a);                //java特殊輸出法(與VB相同)
System.out.println("串接文字用"+b);    //文字與數值串接 用+
```
#### 引用插件工具箱
```java=1
import java.util.*;    //類似C語言的#include(全工具箱)
//將java.util.* import進來，其中涵蓋Scanner公用程式

import java.util.Scanner;    //取工具箱裡的Scanner輸入函數
//跟 #include<stdio.h> 一樣 => 對應到printf和scanf
```                    
---
### 第三題(JPA02)-輸入公斤轉換為磅數(使用輸入函數、final常數):
#### **簡寫**輸入格式:
* 把`keyboard`改為`key`
```java=1
import java.util.Scanner;    //引用插件，Java工具箱中的Scanner(輸入)
System.out.println("Please input:"); //顯示輸入提示
Scanner key=new Scanner(System.in); //寫入[輸入按鍵的動作]
double kg=key.nextDouble(); //設一個變數kg為double，並且接下[鍵盤輸入的值]
System.out.println(pd);     //最後輸出結果
```
#### 鍵盤輸入:
```java
Scanner keyboard=new Scanner(System.in); //keyboard為物件變數名
int x=keyboard.nextInt();         //取得鍵盤輸入的整數用 keyboard.nextInt()
float f=keyboard.nextFloat();    //取得鍵盤輸入的浮點數用keyboard.nextFloat()
double d=keyboard.nextDouble(); //取得鍵盤輸入的浮點數用keyboard.nextDouble()
String s=keyboard.nextLine();  //取得鍵盤輸入的字串用keyboard.nextLine()
char c=keyboard.next();  //取得鍵盤輸入的字元用keyboard.next()
```
#### keyboard.next() VS keyboard.nextLine()
```java=1
keyboard.next()    //無限制，可以打無限多個字串
keyboard.nextLine()    //有特別限制，只能打一個字串
```
![](https://i.imgur.com/c3EsjH7.png)
解答:
```java
import java.util.Scanner;    //引用插件，Java工具箱中的Scanner(輸入)

public class JPA02
{
    public static void main(String[] args)
    {
        final double kgtrn=2.20462; //單位轉換公式(常數)

        System.out.println("Please input:"); //顯示輸入提示
        Scanner keyboard=new Scanner(System.in); //寫入[輸入按鍵的動作(物件)]
        double kg=keyboard.nextDouble(); //設一個變數kg為double，並且接下[鍵盤輸入的值]

        double pd=kg*kgtrn;    //公式[公斤*轉換單位=磅]

        System.out.printf("%9.6f kg = %9.6f ponds\n",kg,pd);   //最後輸出結果
    }
}
```
* **常數final**:表示該變數一旦設定之後，**就不可以再改變該變數的值**
* 9.6=>9代表顯示9個數值(bits)，而6(bits)則是浮點數共6位 Ex.15.000000
* 使用float或double為浮點數，**記得輸出要%f** (不是%d)
---

### 第四題(JPA03)-計算平均值(輸入函數+double計算_浮點數除法):
![](https://i.imgur.com/0wc3wgj.png)
解答:
```java
import java.util.Scanner;    //引用插件，Java工具箱中的Scanner(輸入)

public class JPA03
{
    public static void main(String[] args)
    {
        System.out.println("Please input:"); //顯示輸入提示
        Scanner keyboard=new Scanner(System.in); //寫入[輸入按鍵的動作(物件)]
        int a=keyboard.nextInt(); //設一個變數a為int，並且接下[鍵盤輸入的值]
        int b=keyboard.nextInt(); //設一個變數b為int
        int c=keyboard.nextInt(); //設一個變數c為int
        
        double avg=(a+b+c)/3.0;    //公式[相加/總數]

        System.out.printf("Average:  %8.2f\n",avg);   //最後輸出結果
    }
}
```
* `double avg=(a+b+c)/3.0;`由於是浮點數，所以除法必須為3.0
在求平均值時，要用除以3.0，否則會得到整數!
---
最後編輯時間:2021/3/6 1:55am.
###### tags: `JAVA課堂學習` `複習用` `高科大`