2017年5月31日 星期三

[HTML/CSS]第十二章 HTML5標記 當代的HTML:進度紀錄

總算在 5/31 PM 11:57進入到第十二章節,
必須在 6/2 之前完成,還有四個章節,
得趕快繼續趕工了!

2017年5月28日 星期日

[HTML/CSS]第九章 Box Model 深入親近元件:media query

此章節說明在不同裝置上瀏覽器選擇套用的不同樣式,
難怪有時候在印列網頁時,視覺瀏覽與列印出來的樣式會有差異。

上次發文是5/24,今天是5/29,
從第三章迄今已第九章閱畢,總共有15章,得快加緊腳步在6/2號念完。

2017年5月24日 星期三

[HTML/CSS]第三章 建立區塊 網頁架構:第116頁勘誤

在深入淺出HTML and CSS 第二版的第116頁有誤,
我的書是2016年04月初版三刷,
官網勘誤表( http://books.gotop.com.tw/o_A327 )的錯誤在我的書裡已是更正過,
但表格內也沒有指出該項錯誤。

勘誤如下,提示縱橫及項目數字錯誤,應修正為:

橫向
1. Segway 的最高時速。
6. 把某個元件放在另一個元件,就稱為______。
9. <q>屬於這類元件。
10.使用<ol>製作此類清單。
13.另一個空元件。
14.Tony的交通工具。
15.網頁上的主要結構單元。

縱向
2. Tony 不會做這類事情。
3. 一起開著 T-bird 離開。
4. 使用<ul>製作此類清單。
5. 沒有內容的元件。
7. 知名又引人注目的廣告招牌。
8. 用於引文的區塊元件。
11.需要兩個元件。
12.空元件沒有______。

[HTML/CSS]第三章 建立區塊 網頁架構:心得小記

使用書籍:深入淺出HTML and CSS P.96
發文時已經到第三章了。

第一本書:別再說你不懂HTML5 圖解網頁設計必學的九堂課
說明不夠完整,現在使用的《深入淺出》內容活潑詳盡。

在這一頁,練習把手寫遊記寫成網頁,
出現了第二個無closing tag的元件:<br>
使用的位置也不同。 在此紀錄同時掌握進度,目前算是落後。

2017年5月17日 星期三

[LIFE]轉折 主動認識MagicLen之後:前端三大請進,JAVA再相會

從連結點到這個網站
https://magiclen.org/

看到是台中人,也曾有過餐飲經歷,主因在文末也有聲明歡迎加好友。
於是詢問之下,決定將JAVA學習比例下放,
應該今天下午JS的書就會到,要開始猛攻三大(JS HTML CSS)了,
日後發文也會以三大的為主要篇幅,暫時與JAVA分手。

[JAVA]第4章 認識物件:課後練習(二)

2.撰寫:簡單的樸克牌洗牌程式

失敗作品

    public static void main(String[] args) {
        String[] type = {"桃", "心", "磚", "梅"};
        String[] number
                = {"A", "2", "3", "4", "5", "6", "7",
                    "8", "9", "10", "J", "Q", "K"};
        
        for (int j = 0; j < 52; j++) {
            int t = (int) (Math.random() * 4);  //隨機產生0~3索引值
            int n = (int) (Math.random() * 13); //隨機產生0~12索引值
            String[] card = new String[52];
            card[j] = type[t] + " " + number[n];
              //若有元素重複則重新產生,若使用break會少一張牌
//            if (j + 1 < 52 && card[j + 1].equals(card[j])) {
//                break;
//            }
            System.out.print(card[j] + " ");
        }
        System.out.println();
    }


}

後來想到new在迴圈裡可能會造成程式效率差,
把new拉到迴圈開始前,繼續思考元素可能重複的問題,最後想不出解。
於是換個想法:先把所有的牌都「依序」製造出來,再隨機排列。

[JAVA]第4章 認識物件:課後練習(一)

1.撰寫可讓使用者輸入想計算的費氏(Fibonacci)數個數的程式

    public static void main(String[] args) {
        java.util.Scanner sc1 = new Scanner(System.in);
        System.out.print("求幾個費氏數?");
        int n = Integer.parseInt(sc1.nextLine());

        switch (n) {
            case 1:
            case 2:
                for (int f = 0; f <= n - 1; f++) {
                    System.out.printf("%d ", f);
                }
                break;
            default:
                //case >=3
                int[] f_arr = new int[n];
                f_arr[0] = 0;
                f_arr[1] = 1;
                for (int i = 2; i <= n - 1; i++) {
                    f_arr[i] = f_arr[i - 2] + f_arr[i - 1];
                }
                for (int f : f_arr) {
                    System.out.printf("%d ", f);
                }
        }

    }

想了一段時間,多次從錯中修正,在 if 和 switch 間取捨也有猶豫一下,
最多次出現的 exception,是陣列長度與元素數量不符,
所以嘗試調度建立陣列物件的位置和條件式,
使變數 n 先決定陣列長度後,再進入迴圈,
還有因為 enhanced for loop & print 的位置起初置放於迴圈內,
直接拉到迴圈外會產生編譯錯誤,
故將 int[] f_arr 調整至迴圈外。

是題有成就感的題目。

2017年5月16日 星期二

[JAVA]第4章 認識物件:4.3.3 陣列複製(Sallow copy、Deep copy)

在4-30、4-31陣列複製談到淺層複製與深層複製

以下是我節錄整理的解讀

Sallow copy: 複製「參考」
Deep copy: 「建立」(new)並複製「元素」

2017年5月10日 星期三

[JAVA]第3章 基礎語法:課後練習

1.最大公因數 (G.C.D.)
2.找出所有三位數的阿姆斯壯數 (Armstrong number)


1.

int n = 495, m = 1000;
for (int i = 1; i <= m; i++) {
        if (n % i == 0 && m % i == 0) {
            System.out.println("cd(495,1000)=" + i);
        }

}

花很多時間在想:如何只印出gcd,但還是沒想到。
有想過用Array,不過單元還沒介紹到,先在此紀錄。

2.

int h=1,t=0,o=0;
for(h=1;h<=9;h++){
    for(t=0;t<=9;t++){
        for(o=0;o<=9;o++){
            if(h*h*h+t*t*t+o*o*o == h*100+t*10+o*1){
                System.out.println(h*100+t*10+o*1);
            }
        }
    }

}

原本設 int hun,ten,one;
但後來發現不能使用 ^ 運算三次方,

只好簡化、並用 * 運算蠻幹,先寫出這麼醜的程式碼。
還在想如何寫得漂亮,可能要用Math.*吧,同上題原因先記錄。

2017年5月9日 星期二

[JAVA]第3章 基礎語法:3.2.5 break、continue


頁碼 3-31、3-32
https://openhome.cc/Gossip/Java/Break-Continue.html



continue只會略過之後陳述句,並回到迴圈區塊開頭進行下一次迴圈,而不是離開迴圈

這裡的範例不夠理解:

back1: 
for(int i = 0; i < 10; i++){ 
    back2: 
    for(int j = 0; j < 10; j++) { 
        if(j == 9) { 
            continue back1; 
        } 
    }
    System.out.println("test"); 
}

目前理解是這樣:
這裡i = 0,在j = 9 時遇到continue back1,
忽略back1 for迴圈的陳述句(從 back2: 到 印出"test"),
進行i = 1,重複執行到i = 10離開迴圈。


back1: 
for(int i = 0; i < 10; i++){ 
    back2: 
    for(int j = 0; j < 10; j++) { 
        if(j == 9) { 
            continue back2; 
        } 
    }
    System.out.println("test"); 
}

i = 0,在j = 9 時遇到continue back2,忽略back2 for迴圈的陳述句
(從 for(int j = 0; ...) 到 印出"test"前的 "}" 
),
因為j = 10結束back2 for迴圈,
印出"test"沒有被忽略,所以在 i = 0, j = 10 時印出"test",
接著執行i = 1。

2017年5月7日 星期日

[JAVA]第2章 從JDK到IDE:2.2.1 javac與sourcepath

頁碼 2-16、2-17

覺得好混亂,反覆鑽研了三、四次還是不太懂,
https://openhome.cc/Gossip/Java/CLASSPATH-javac.html

漸漸有些頭緒,但還沒確定:

1. java  是啟動  JVM     的指令,-cp是找              位元碼 (.class) 的路徑
2. javac是啟動 compiler的指令,-sourcepath是找  原始碼 (.java)  的路徑