# 1082物件導向程式語言 Q&A 集
::: warning
**哈囉!**
同學如果不好意思直接問助教,或是有任何心中對這門課程的建議或想法,都歡迎使用匿名表單來告訴助教或老師唷!
:icecream: 匿名表單連結: https://forms.gle/ukhsZDmqtHZzddyv7
:::
## 解析存取控制OOXX爭議
> 更新日期:2020-06-15
### 答覆
```java=
package tku;
public class Alice {
protected int a = 1;
int b = 2;
}
```
```java=
package ntust;
import tku.*;
public class Bob extends Alice { // Bob 成為 Alice 的子類別
private int temp;
public void report() {
temp += a; // 讀得到 Alice 的 a
temp += b; // 讀不到 Alice 的 b (編譯錯誤)
}
}
```
```private``` 將變數對其他任一個 class 隱藏
```public``` 將變數公開給 package 外的每個 class
```protected``` 跟 public 很相似,但只限「子類別」存取
---
## final exam
> 更新日期:2020-06-15
### 答覆
程式題主要以 main 裡面程式為主,當然如果寫得更完整更好。
擔心分數有危險,是否能要求額外的 project 來加分?
---
## Can i have an english question for the final exam?
> 更新日期:2020-06-14
### 答覆
The final exam questions will be printed in Chinese because it was given by the teacher. I will try to explain in English to you by the time.
---
## 「父類別 a = new 子類別」是什麼意思
> 更新日期:2020-06-14
### 答覆
先在記憶體中建構出子類別物件,再以父類別參考型別變數 a 指向該物件。變數位在記憶體 stack 裡,物件實例位在記憶體 heap 上。
---
## 基本型別跟參考型別差在哪?
> 更新日期:2020-06-14
### 答覆
一個像是 int, float, double, boolean
一個像是 Animal, Dog, Cat
---
## 考試會有直接手寫程式碼的題目嗎?還是模式就跟小考一樣
> 更新日期:2020-06-14
### 答覆
會有直接手寫程式碼的題目!不能用電腦。
---
## Email看不到圖片或影片
> 更新日期:2020-06-13
### 答覆
這是 Moodle 的一個 Bug,公佈欄訊息在 Email 中可能有部份圖片或影片顯示不出來,請點擊 Email 中的「檢視本留言內容」,或是從 Moodle 網站進入公佈欄觀看。
---
## Java如何印出一個空白
> 更新日期:2020-06-10
### 答覆
```java=
System.out.print(" ");
```
---
## 請問下,期末紙本考試有開放電腦使用嗎?
> 更新日期:2020-06-05
### 答覆
期末考不能使用任何電子裝置、Close Book。
30分由小考題出
總分100分(題目會出120分)
---
## Regex
> 更新日期:2020-06-09
### 問題
為什麼這個 Regex 不能 Match ```11:12:13```
```([0-1][0-9])|(2[0-3]):([0-5][0-9]):([0-5][0-9])```
### 答覆
```([0-1][0-9]|[2][0-3]):([0-5][0-9]):([0-5][0-9])```
---
## 請問在實作interface時,網上的class extends XX implements 都可以建構物件,但是自己在試的時候卻發生錯誤:abstract cannot be instantiated 。這是發生甚麼問題?
> 更新日期:2020-05-30
### 答覆
可能的原因是 abstract 的 class 不能被 new 出來,需要 new 出他的子類別。
詳細的原因可能要提供完整程式碼才能判斷。
---
## PPT勘誤
> 更新日期:2020-05-04
setcalandar 用有意義的參數,如2020,5,4。
「參考第八章」等語改用10 Early Edition(先教物件導向)參照。
---
## 要新增類別的話要怎麼用
> 更新日期:2020-05-27
### 答覆
類別就是 class 開頭的東東
最簡單的類別可以像這樣:
```java=
class Student{
}
```
---
## 直接宣告一個 List 類別的物件會有問題嗎
> 更新日期:2020-05-20
### 問題
PPT中提到以下程式:
```java=
List list = new LinkedList();
```
如果 List 後方沒有接上```<>```符號,則List會將所有物件視為Object物件,此時可以將不同類別的物件加入串列之中。
但是現在的版本(Java SE 11)好像有改?好像要改成這樣才能用?
```java=
List<Object> list = new LinkedList<>();
```
### 答覆
使用 Java SE 11 可以順利編譯以下程式:
```java=
public class Test {
public static void main(String[] args) {
List list = new LinkedList();
// Deprecated from SE 9
// list.add(new Integer(1));
list.add(Integer.valueOf(123));
list.add(Integer.valueOf(456));
Iterator elements = list.iterator();
while (elements.hasNext()) {
Integer partObj = (Integer) elements.next();
int part = partObj.intValue();
System.out.println("Number: " + part);
}
}
}
```
### Reference
Java SE7/8 OCPJP 進階認證指南 / 曾瑞君
---
## hw11 : 484沒給11_sample.zip
> 更新日期:2020-05-20
### 答覆
對 :smiley:
完整的程式碼皆在 PPT,自己重新打一次。
---
## BAT檔的@代表什麼意思
> 更新日期:2020-05-18
### 答覆
The @ symbol tells the command processor to be less verbose; to only show the output of the command without showing it being executed or any prompts associated with the execution.
翻譯:不印出指令,直接印出結果。
### Reference
https://stackoverflow.com/questions/8486042/what-does-mean-in-windows-batch-scripts
https://stackoverflow.com/questions/21074863/what-is-the-at-sign-in-a-batch-file-and-what-does-it-do
---
## hw10 : 為什麼 nextLine 停不下來
> 更新日期:2020-05-16
### 答覆
因為除了 nextLine 自己之外,其他 next 開頭的方法都只會讀取符合自己需求的輸入內容,以 nextInt 為例,當我們輸入完數字後,按下 Enter,這個「Enter」的換行其實已經被接下來的 nextLine 讀取了,而 nextLine 方法是當遇到換行就結束。我們來看看這個範例:
```java=
System.out.println("\nEnter port number:");
Integer serverPort = scan.nextInt();
System.out.println("\nEnter your username:");
String userName = scan.nextLine();
System.out.println("\nserverPort: " + serverPort
+ "\nuserName: " + userName);
```
如果我們輸入:
```java=
Enter port number:
123 abc
Enter your username:
```
最後會輸出:
```java=
serverPort: 123
userName: abc
```
因此,建議在作業中可以使用 nextLine 來讀取輸入的數字,再將數字字串透過 parse 方法來轉換成數字。
### Reference
https://stackoverflow.com/questions/2268598/java-programm-not-stopping-for-scan-nextline
https://stackoverflow.com/questions/13102045/scanner-is-skipping-nextline-after-using-next-or-nextfoo
---
## 請問期中考分數占比一樣是佔總成績15%嗎?那麼計算方式為何?
> 更新日期:2020-05-16
### 答覆
依據教學大綱,期中考分數占比一樣是佔總成績15%。
---
## 作業成績何時會公佈呢?是否會在二退結束前公布?
> 更新日期:2020-05-16
### 答覆
如擔心作業成績不理想、或可能有二退,歡迎隨時聯絡助教取得個人作業分數。
---
## 請問5/18的小考範圍?
> 更新日期:2020-05-16
### 答覆
原課程進度表誤植為期中考週,已更正。
---
## 請問期中考班級平均分數?
> 更新日期:2020-05-16
### 答覆
已公佈全班成績,可自行推算。
---
## 期中考成績詳細說明
> 更新日期:2020-05-13
https://docs.google.com/spreadsheets/d/e/2PACX-1vSY8-tNDdI9RU3TFbdPpzJidj0iWXv4mftQlE9Grbuss_CO9ky6mkLM0KPRHwp9pFJQvUduK4mY1bb3/pubhtml?gid=228873&single=true
---
## 為什麼要跳過 hw9
> 更新日期:2020-05-11
### 答覆
因為之前週次跟作業號次都沒對到,造成了處理上的一些小混亂,這次一次全部統一號碼。
---
## hw8 亂碼問題
> 更新日期:2020-05-09
### 問題
把範例的程式碼打開之後,原本中文的地方都是奇怪的字,
要怎麼樣才可以直接正常顯示中文?
### 答覆
已重新上傳 UTF-8 編碼版本的範例。
---
## Regular Expression 問題:?+
> 更新日期:2020-05-03
### 問題
Regex 中若問號後面多一個加號,是什麼意思?
### 答覆
It's a possessive quantifier.
```".*"``` matches ```"abc"``` in ```"abc"x```, but ```".*+"``` does not match this string at all.
首先,```"``` 會抓到 ```"``` ,接著 ```.``` 會抓到剩下的「任何字」 ```abc"x``` ,不過最後 RegEx 又多了一個 ```"```,但所有字串已經被抓完了,而星號「多一個加號」代表是 possessive(佔有)特性,意即「抓到越多越好」且「不會往回找」,這是跟沒有加號不一樣的地方。
### Reference
https://www.regular-expressions.info/possessive.html
---
## 如何隨機產生0.0~10.0(包含)的小數?
> 更新日期:2020-05-02
### 答覆
```Math.random()*11```
---
## 請問作業的加分題的加分比例大概是多少呢?
> 更新日期:2020-04-28
### 答覆
期末依學期整體狀況而定。
---
## StringBuffer 和 StringBuilder 的差別
> 更新日期:2020-04-26
### 問題
想請問Stringbuffer和Stringbuilder的差別 上網查了資料還是看不太懂
### 答覆
根據網路大神說法,兩者幾乎是一樣的,但StringBuilder被視為一個用來替代StringBuffer的類別,只有真正需要在執行序(threads)之間傳遞 buffer 時再用 StringBuffer。
### Reference
https://stackoverflow.com/questions/355089/difference-between-stringbuilder-and-stringbuffer
---
## 關於 hw7
> 更新日期:2020-04-25
### 問題
```java=
public class TicTacToe
{
String game[][]=new String[5][5];
game[0][1]="|";
}
```
這樣會出現"["expected cannot find symbol symbol:class game location: class tictactoe 的錯誤
可是當我打成
```java=
public class TicTacToe
{
String game[][]={{"","|","","|",""},{"--","--","--","--","--"},{"","|","","|",""},{"--","--","--","--","--"},{"","|","","|",""}};
}
```
就沒錯
請問這兩個打法差在哪?
### 答覆
提供的程式碼不完整,請再提供完整的程式碼。
---
## 關於 hw6 加分題:網頁程式顯示
> 更新日期:2020-04-16
### 問題
關於那個加分題,請問我要如何把網頁內碼變成網頁的內容?
### 答覆
以 Google Chrome 打開 index.html 後,頁面呈現的文字即為網頁程式碼。
將其複製後,取代原 index.html 之原始碼,並再次以 Chrome 打開 index.html,即可看到網頁程式被 render 出來。
---
## 關於 hw6 加分題:網頁資料抓取
> 更新日期:2020-04-15
### 問題
上課好像沒有說到加分題的所要用的內容,我也上網查了但還是不太理解要怎麼從網頁原始碼去抓取表格所需內容。
### 答覆
觀察 index.html 我們可以發現,關鍵的資料表格是由以下程式碼產生:
```htmlmixed=
<table class="table table-striped">
<thead><tr><th>Position</th><th>Programming Language</th><th>Ratings</th></tr></thead>
<tbody>
<tr><td>21</td><td>SAS</td><td>1.513%</td></tr><tr><td>22</td><td>D</td><td>1.413%</td></tr><tr><td>23</td><td>Dart</td><td>1.357%</td></tr><tr><td>24</td><td>ABAP</td><td>1.270%</td></tr><tr><td>25</td><td>COBOL</td><td>1.226%</td></tr><tr><td>26</td><td>Lua</td><td>0.933%</td></tr><tr><td>27</td><td>Transact-SQL</td><td>0.840%</td></tr><tr><td>28</td><td>Fortran</td><td>0.805%</td></tr><tr><td>29</td><td>Logo</td><td>0.792%</td></tr><tr><td>30</td><td>Ada</td><td>0.787%</td></tr><tr><td>31</td><td>Scala</td><td>0.727%</td></tr><tr><td>32</td><td>Lisp</td><td>0.673%</td></tr><tr><td>33</td><td>LabVIEW</td><td>0.635%</td></tr><tr><td>34</td><td>Scheme</td><td>0.552%</td></tr><tr><td>35</td><td>Prolog</td><td>0.542%</td></tr><tr><td>36</td><td>Groovy</td><td>0.473%</td></tr><tr><td>37</td><td>Apex</td><td>0.439%</td></tr><tr><td>38</td><td>Haskell</td><td>0.434%</td></tr><tr><td>39</td><td>MQL4</td><td>0.420%</td></tr><tr><td>40</td><td>Erlang</td><td>0.409%</td></tr><tr><td>41</td><td>Rust</td><td>0.375%</td></tr><tr><td>42</td><td>Bash</td><td>0.363%</td></tr><tr><td>43</td><td>RPG (OS/400)</td><td>0.358%</td></tr><tr><td>44</td><td>ActionScript</td><td>0.342%</td></tr><tr><td>45</td><td>Alice</td><td>0.341%</td></tr><tr><td>46</td><td>Ladder Logic</td><td>0.330%</td></tr><tr><td>47</td><td>Hack</td><td>0.325%</td></tr><tr><td>48</td><td>Awk</td><td>0.297%</td></tr><tr><td>49</td><td>Clojure</td><td>0.262%</td></tr><tr><td>50</td><td>VHDL</td><td>0.258%</td></tr>
</tbody>
</table>
```
觀察後可以發現,其中包含一些規律可以加以運用。
---
## 關於 hw6 輸出輸入檔案路徑
> 更新日期:2020-04-18
### 問題
請問hw6的input.txt、index.html以及輸出的檔案有指定檔案的絕對路徑嗎? 還是使用相對路徑就好?
如果我使用相對路徑的話,且只壓縮*.java,然後壓縮檔放input.txt、*.java,助教開得起來嗎?因為我自己試了一次開不起來,所以現在壓縮整個專案檔。
### 答覆
輸出在同一個資料夾即可。
請參考範例檔「Gradebook.zip」輸出輸入檔案的路徑。
更新:
以路徑```input.txt```為例,若是以Netbeans執行程式,相對路徑是在專案目錄第一層中(與```src```資料夾並列同一層),但若是以command line編譯執行,則會與```GradeBookTest.java```等檔案並列同一層。
---
## 該換隻白板筆了 :warning:
> 更新日期:2020-04-13
### 答覆
好 QQ
---
## 關於期中考 :warning:
> 更新日期:2020-04-12
### 問題
請問有甚麼期中考古題可以提供練習嗎? 還有期中考時可以帶程式碼還是講義嗎?
### 答覆
上機考,可自備電腦,任何筆記都可以攜帶,將程式在三小時內寫出。
作答結果由助教透過USB隨身碟集中,作答路徑須與作答說明符合。
兩、三個類別。
---
## 沒有買到書怎麼辦?
> 更新日期:2020-04-12
## 答覆
在Google搜尋「java how to program pdf」看看,可能會有驚人的發現。
另外,助教個人推薦 [w3schools](https://www.w3schools.com/java/) 這個網站,裡面的教學由淺入深,更有即時的程式小片段輸出成果可以參考。
---
## 補考
> 更新日期:2020-04-11
### 問題
如果生病沒去上課還能補考嗎?
### 答覆
是的,沒有考到小考的同學需要補考,否則沒有分數。
---
## Regular Expression 問題:體重
> 更新日期:2020-04-09
### 問題
```java=
weight.matches("\\d+[,]\\d+")
weight.matches("[-]?\\d+[,][-]??\\d+")
weight.matches("[-]?\\d+[.]?\\d*")
```
上面出現的這個是什麼意思"[-]",這種match的方法可以再講詳細一點嗎!
### 答覆
我們先以第二行最長的那行做範例來講解。
```[-]``` 指一個 dash
```?``` 表示前面那個 dash 出現 0 次或 1 次
```\\d``` 指一個數字
```+``` 表示前面那個數字出現 1 次或或多次
```[,]``` 指一個逗號
```??``` 跟一個問號同樣都是判斷前面那個 dash 出現 0 次或 1 次,但是這次是先比對後面的條件,若後面的條件符合則就不比對前面那個 dash 了
```\\d``` 指一個數字
```+``` 表示前面那個數字出現 1 次或或多次
推薦使用[這類網站](https://regexr.com/)練習。
### Reference
https://stackoverflow.com/questions/21289027/java-regular-expression-two-question-marks
---
## 可以盡量準時一點下課嗎? :warning:
> 更新日期:2020-04-06
### 問題
可以盡量準時一點下課嗎? 因為有些同學接下來還有課要上
### 答覆
好,助教會再加快的 QAQ
---
## 作業成績與解答公布 :warning:
> 更新日期:2020-04-05
### 問題
請問關於作業是否會在批改完後在 Moodle 上公布成績?作業能否在繳交期限過後提供 sample code 給同學們做參考。
### 答覆
作業的題目解法,都是與課堂上講解的範例程式十分類似,所以我們不會另外再給作業的sample code。若同學們有寫程式的問題,可以找助教討論。
---
## 作業跟考試可以不要超出範圍嗎?
> 更新日期:2020-04-05
### 問題
作業跟考試可以不要超出範圍嗎?我覺得如果來不及上完,可以去調整一下課程進度。
### 答覆
期中考試與期末考試不會超出教授的範圍,日後小考也會注意不考超出教授範圍的東西。
作業部分,有些尚未教授的程式部分(通常是使用某個內建類別或方法),會給使用說明,至於原理的部分,會依課程模組進度講授。
作業有時會需要使用一些尚未提到的內建類別或方法,是為了能出一些有意義的程式練習作業。
---
## 字串比較為什麼不能用等於
> 更新日期:2020-04-05
### 答覆
```java=
public class Test {
public static void main(String[] args) {
String a = new String("abc");
String b = "hello";
// false
System.out.println(a == "abc");
// true
System.out.println(a.equals("abc"));
// true
System.out.println(b == "hello");
}
}
```
---
## 考試能否以英文出題?
> 更新日期:2020-04-04
### 答覆
可以用英文作答,但因本課程為中文授課故暫無法以英文出題。
---
## 類別跟物件差在哪?
> 更新日期:2020-04-03
### 答覆
這是一個叫做「Animal」的==類別==:
```java=
class Animal {
String name;
int color;
void bark(){
System.out.println("汪!");
}
void setname(String valueFromMain){
this.name = valueFromMain;
}
String getname() {
return this.name;
}
}
```
這是創建一個叫做「dog」的 Animal ==物件==:
```java=
public class TestAnimal {
public static void main(String[] args) {
Animal dog = new Animal();
dog.setname("Happy");
System.out.println("你創建的動物名字叫做:"+dog.getname());
}
}
```
---
## Switch Case Return 問題
> 更新日期:2020-04-02
### 問題
為什麼這段程式會出現「缺少 return value」的錯誤?
```java=
public boolean checkjender() {
if (input.indexOf(1) == '2' || input.indexOf(1) == '1') {
switch (input.indexOf(1)) {
case 1:
return true;
case 2:
return true;
}
} else {
return false;
}
}
```
### 解決方案
請試著在 switch 中加入 default 即可,因為 switch 所遇到的情況可能不是 1 也不是 2。
---
## 上課PPT內容疑義:StringBuffer Capacity
> 更新日期:2020-04-01
### 問題
上課 PPT「 05_strings_characters_and_regular_expressions.ppt 」檔案中出現有關「Capacity 預設的緩衝區為16字元,超過16字元會增加18字元…」等敘述,與實際情況不符。
### 答覆
經實際測試,無論 StringBuffer 存放了幾個字元,預設都會額外加上固定 16 字元的 capacity,因此推論PPT中敘述有疑義,==請同學忽略該段敘述==。
可以使用下面這個小程式做實驗:
```java=
public class Test {
public static void main(String[] args) {
// 預設沒有值的 StringBuffer
StringBuffer apple = new StringBuffer();
// 少於 16 字元
StringBuffer banana = new StringBuffer("0123456789");
// 剛好等於 16 字元
StringBuffer cat = new StringBuffer("0123456789012345");
// 超過 16 字元
StringBuffer dog = new StringBuffer("01234567890123456");
// 印出上列 StringBuffer 的 Capacity
// 16
System.out.println("Capacity 1: " + apple.capacity());
// 26
System.out.println("Capacity 2: " + banana.capacity());
// 32
System.out.println("Capacity 3: " + cat.capacity());
// 33
System.out.println("Capacity 4: " + dog.capacity());
}
}
```
---
## 有做加分題是只要交一個就好了嗎
> 更新日期:2020-04-01
### 問題
HW4 因為加分題是包含第一題,有做加分題是只要交一個就好了嗎?
### 答覆
對的。
---
## 輸入的中文字串無法使用 equals() 比較
> 更新日期:2020-03-30
### 問題
課本不是說字串可以用 ```equals()``` 方法來比較是否相同嗎?為什麼在使用者輸入中文字串後,與預先設定好的中文字串比較,卻出現 ```false``` 不相等?
### 解決方案
這是因為我們在 IDE 裡面編譯時的編碼方式與系統輸入文字的編碼方式不同所致。
請試著使用第一週跟同學分享的方法,使用 terminal 編譯程式,假設主程式所在的類別叫做 Test,則使用命令提示字元做以下操作:
```shell=
> javac Test.java -encoding utf-8
> java Test
```
使用 utf-8 編碼方式來編譯程式,即可使需要讓使用者輸入中文字串的程式正常運作。
### 範例程式
```java=
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
// System.out.println("Cool");
while (true) {
String sa[] = {"台北","taipei","嘉義","台北"};
System.out.print("請輸入字串:");
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
// true
System.out.println("中文是否相等?" + sa[0].equals(sa[3]));
System.out.println("input length: " + input.length());
System.out.println("sa[0] length: " + sa[0].length());
System.out.println("是否與 "+ sa[0] +" 相等? " + input.equals(sa[0]));
System.out.println("是否與 "+ sa[1] +" 相等? " + input.equals(sa[1]));
System.out.println("輸入的字串:" + input);
}
}
}
```
### Reference
https://kknews.cc/zh-tw/code/gy5rx2l.html
---
## 有什麼方法可以判斷字串是不是數字
> 更新日期:2020-03-30
### 答覆
可以使用內建的 ```Character.isDigit()``` 方法來判斷單一字元是否為數字。
若要判斷整個字串是否為數字,因為內建沒有提供判斷的方法,所以需要自己寫一個函式。
### 範例程式 1
```java=
public static boolean isDigit(String str){
for(int i = 0; i< str.length() ; i++){
char c = str.charAt(i);
if(!Character.isDigit(c))
return false;
}
return true;
}
}
```
### 範例程式 2
#### 數值判斷
```java=
// 判斷string變量是否是數字,能判斷小數點, 負號
public static boolean isNumeric(String str) {
boolean union = true;
for (int i = str.length(); --i >= 0;) {
int chr = str.charAt(i); // 字串中個別字元對應到ascii碼
if(i == 0 && chr == 45) // 判斷第一位是否為負號
union &= true;
else if(chr >= 48 && chr <= 57) // 判斷是否為數字
union &= true;
else if(i != 0 && chr == 46) // 判斷是否有小數點,且不在第ㄧ位出現
union &= true;
else union &= false; // 其他狀況皆為false
}
return union; // 回傳上述所有聯集過的布林值
}
```
#### 單純判斷整數
```java=
// 單純判斷string變量是否為整數,能判斷負數
public static boolean isInterger(String str){
for (int i = 0; i < str.length(); i++){
if (!(str.charAt(0) == '-') && !Character.isDigit(str.charAt(i)))
return false;
}
return true;
}
```
---
## 作業需要加註解嗎?
> 更新日期:2020-03-30
### 答覆
加註解是寫程式的好習慣,不僅能幫助自己在未來回來看程式時的理解,也能幫助其他人看懂自己寫的程式。
作業中的程式碼若在 PPT 評分標準中沒有提及須加註解,則不必要加註解。
---
## IDE 一定要使用 NetBeans 嗎?用其他的話會不會差別很大?
> 更新日期:2020-03-30
### 答覆
不一定要使用 NetBeans 唷,上課以 NetBeans 做範例是因為教室的電腦目前只有預先安裝 NetBeans。
其它 IDE 可能在操作流程上會不太一樣,但程式本身不會有太大差異。
---
## 猜數字遊戲的亂數是怎麼產生的
> 更新日期:2020-03-30
### 問題
猜數字遊戲的正確答案亂數是怎麼產生的?中間的「*」是什麼意思?
### 答覆
```java
(int) (Math.random() * (max-min+1) + min)
// (強制轉換為整數型別)亂數×(最大值-最小值+1)+最小值
```
---
## IDE 開啟包含中文的 java 檔時中文變成亂碼
> 更新日期:2020-03-30
### 解決方案
這個問題有三種解決的方法:
1. 可以進入 IDE 的設定,將編碼方式(encoding)改成 UTF-8。
2. 可以將顯示字型改成支援中文的字型,例如:微軟正黑體。
3. 透過修改 netbeans.conf 檔的內容,將預設編碼方式(encoding)改成 UTF-8。
### Reference
https://xyz.cinc.biz/2018/07/netbeans-default-open-file-utf8.html
https://ufddsben.pixnet.net/blog/post/22134936
---
## Java 檔點開後變成記事本
> 更新日期:2020-03-30
### 問題
NetBeans 匯出或存檔後,都會變成記事本的樣子,想請問該怎麼轉換成 java 檔呢?
### 答覆
1. 在 .java 檔案上按右鍵
2. 選擇開啟方式
3. 改為用 Netbeans 開啟就可以囉