星期五, 6月 24, 2011

20110624 Java練習小記

package chapter14.homework;
import java.io.*;
public class Chapter14Homework2 {

 public static void main(String[] args) {
  try{
   //這邊忘記 PrintWriter 的用法要多練習    PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("test2.txt")));
  
   pw.println("A long time ago,");
   pw.println("There was a little girl.");
  
   pw.close();
  }
  catch(IOException e)
  {
   System.out.println("輸出入錯誤");
  }
 }
}

package chapter14.homework;
import java.io.*;
public class Chapter14Homework3 {
 public static void main(String[] args) {
  if( args.length != 1)
  {
   System.out.println("請指定正確檔案名稱");
   System.exit(1);
  }

  try{
   PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(args[0])));
 
   pw.println("A long time ago,");
   pw.println("There was a little girl.");
 
   pw.close();
  }
  catch(IOException e){
   System.out.println("輸出入錯誤");
  }

 }
}

package chapter15.lab1;
//啟動執行緒
//延伸執行緒類別 Thread
class Car extends Thread
{
 private String name;

 public Car(String nm)
 {
  name = nm;
 }

 //這邊一定要定義一個 run() 方法  public void run()
 {
  for( int i=0; i<5;i++)
  {
   System.out.println("正在進行"+name+"的處理");
  }
 }
}
class Sample1 {
 public static void main(String[] args) {
  Car car1 = new Car("1號車");
 
  //啟動新的執行緒   car1.start();
 
  for(int i=0; i<5; i++)
  {
   System.out.println("正在進行main()的處理");
  }
 }
}

package chapter15.lab2;
//啟動多個執行緒
//延伸執行緒類別 Thread
class Car extends Thread
{
 private String name;

 public Car(String nm)
 {
  name = nm;
 }

 //這邊一定要定義一個 run() 方法  public void run()
 {
  for( int i=0; i<5;i++)
  {
   System.out.println("正在進行"+name+"的處理");
  }
 }
}
class Sample2 {
 public static void main(String[] args) {
  //執行 2 個執行緒   Car car1 = new Car("1 號車");
  car1.start();
 
  Car car2 = new Car("2號車");
  car2.start();
 
  for (int i=0; i< 5 ; i++)
  {
   System.out.println("正在進行main()的處理");
  }
 }
}

package chapter15.lab3;
//暫停執行緒
class Car extends Thread
{
 private String name;

 public Car(String nm)
 {
  name = nm;
 }

 public void run()
 {
  for(int i=0; i<5; i++)
  {
   try{
    //處理這個敘述的時候會暫停 1 秒處理執行緒, sleep() 的單位是千分之ㄧ秒     sleep(1000);
    System.out.println("正在進行"+name+"的處理");
   }
   //處理例外狀況    catch(InterruptedException e)
   {
   
   }
  }
 }
}
class Sample3 {
 public static void main(String[] args) {
  Car car1 = new Car("1號車");
  car1.start();

  for(int i=0; i<5; i++)
  {
   System.out.println("正在處理main()");
  }

 }
}

package chapter15.lab4;
//暫停別的執行緒
class Car extends Thread
{
 private String name;

 public Car(String nm)
 {
  name = nm;
 }

 public void run()
 {
  for(int i=0; i<5; i++)
  {
   System.out.println("正在進行"+name+"的處理");
  }
 }
}

class Sample4 {
 public static void main(String[] args) {
  //這次暫停的是  main這邊   Car car1 = new Car("1號車");
  car1.start();
 
  for(int i=0; i<5; i++)
  {
   try{
    //每次執行這個執行緒都會暫停1秒     Thread.sleep(1000);
    System.out.println("正在進行main()的處理");
   }
   catch(InterruptedException e){}
  }
 }
}

package chapter15.lab5;
//等待執行緒
class Car extends Thread
{
 private String name;

 public Car(String nm)
 {
  name = nm;
 }

 public void run()
 {
  for(int i=0; i<5; i++)
  {
   System.out.println("正在進行"+name+"的處理");
  }
 }
}

class Sample5 {
 public static void main(String[] args) {
  Car car1 = new Car("1號車");
  car1.start();
 
  try{
   //會等待 car1 這個執行緒結束之後,再執行其他的執行緒    car1.join();
  }
  catch(InterruptedException e){}
 
  System.out.println("正在處理main()");
 }
}

package chapter15.lab6;
//實作Runnable 介面 來執行執行緒
//如果執行 Runnable 的介面一定要執行 Runnable.run()
class Car implements Runnable
{
 private String name;

 public Car(String nm)
 {
  name = nm;
 }
 public void run()
 {
  for (int i=0; i<5; i++)
  {
   System.out.println("正在進行"+name+"的處理");
  }
 }
}
class Sample6 {
 public static void main(String[] args) {
  Car car1 = new Car("1號車");
 
  //產生 Thread 類別的物件, 然後把 car1 變數放進去   Thread th1 = new Thread(car1);
  //啟動執行緒   th1.start();
 
  for(int i=0; i<5; i++)
  {
   System.out.println("正在進行main()的處理");
  }
 }
}

package chapter15.lab7;
//同步:  執行緒所引起互相扺觸狀況
//客運公司類別
class Company
{
 //先初始化車資為 0  private int sum = 0;

 //統計賺到的車資, 加上 synchronized 可以做到某執行緒呼叫 add()方法時, 其他執行緒不得再呼叫 add() 方法  public synchronized void add(int a)
 {
  int tmp = sum;
  System.out.println("現在總計"+tmp+"元");
  System.out.println("賺了"+a+"元");
  tmp = tmp +a;
  System.out.println("總計為"+tmp+"元");
  sum = tmp;
 }
}
//司機類別
class Driver extends Thread
{
 //建立一個 Company 類別的變數 comp  private Company comp;

 public Driver(Company c)
 {
  comp = c;
 }

 public void run()
 {
  for(int i=0; i<3; i++)
  {
   comp.add(50);
  }
 }
}

class Sample7 {
 public static void main(String[] args) {
  //產生客運公司的物件   Company cmp = new Company();
 
  Driver drv1 = new Driver(cmp);
  drv1.start();
 
  Driver drv2 = new Driver(cmp);
  drv2.start();
 }
}

package chapter15.homework2;

class Car implements Runnable
{
 private String name;

 public Car(String nm)
 {
  name = nm;
 }

 //這邊一定要定義一個 run() 方法  public void run()
 {
  for( int i=0; i<5;i++)
  {
   System.out.println("正在進行"+name+"的處理");
  }
 }
}
class Chapter15Homework2 {
 public static void main(String[] args) {
  //執行 2 個執行緒   Car car1 = new Car("1 號車");
  Thread th1 = new Thread(car1);
  th1.start();
 
  Car car2 = new Car("2號車");
  //跟使用 Thread 子類別 car2.start(); 方法不同的是
  //要先產生  Thread 類別物件, 然後把變數放進去

  Thread th2 = new Thread(car2);
  //再啟動執行緒 ^^ 這次我有記住   th2.start();
 
  for (int i=0; i< 5 ; i++)
  {
   System.out.println("正在進行main()的處理");
  }
 }
}

package chapter15.homework3;

class Car implements Runnable
{
 private String name;

 public Car(String nm)
 {
  name = nm;
 }

 public void run()
 {
  for(int i=0; i<5; i++)
  {
   try{
   
 //處理這個敘述的時候會暫停 1 秒處理執行緒, sleep() 的單位是千分之ㄧ秒
    //由於不是直接繼承 Thread 子類別, 所以 sleep(); 不能直接寫, 要使用 Thread.sleep()

    Thread.sleep(1000);
    System.out.println("正在進行"+name+"的處理");
   }
   //處理例外狀況    catch(InterruptedException e)
   {
   
   }
  }
 }
}
class Chapter15Homework3 {
 public static void main(String[] args) {
  Car car1 = new Car("1號車");
  //car1.start();
  Thread th = new Thread(car1);
  th.start();


  for(int i=0; i<5; i++)
  {
   System.out.println("正在處理main()");
  }

 }
}

package chapter16.lab1;
//Java Applet 練習
//匯入相關套件
import java.applet.Applet;
import java.awt.Graphics;
//要使用 Java Applet 要從Applet 延伸子類別 public class Sample1 extends Applet
{
 //要顯示 Applet的時候呼叫的方法  public void paint(Graphics g)
 {
  //drawString("顯示字串", x, y)   g.drawString("歡迎來到 java Applet", 10, 10);
 }
}

package chapter16.lab2;
//劃線的Applet
import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;


public class Sample2 extends Applet
{

 public void paint(Graphics g)
 {
  //設定顏色為紅色   g.setColor(Color.red);
 
  //drawLine(線段起點座標  線段終點座標)   g.drawLine(10, 10, 100, 100);
 
  //顯示文字   g.drawString("Hello",100,100);
 }
}

package chapter16.lab3;
//顯示圖片
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Image;

public class Sample3 extends Applet
{
 Image img;

 //這個方法只有在 Applet 啟動才會呼叫一次  public void init()
 {
  img = getImage(getDocumentBase(),"Sunset.jpg");
 }
 public void paint(Graphics g)
 {
  g.drawImage(img, 10, 10, this);
 }
}

package chapter16.lab4;
//與滑鼠產生互動
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import java.awt.Color;

//實作 MouseListener public class Sample4 extends Applet implements MouseListener
{
 //初始 x, y 座標  int x = 10;
 int y = 10;

 public void init()
 {
  //呼叫 addMouseListener 方法, 接收滑鼠已經按下這個事件準備工作   addMouseListener(this);
 }

 public void mouseClicked(MouseEvent e)
 {
 }
 //滑鼠游標進入 Applet 範圍之後  public void mouseEntered(MouseEvent e)
 {
 }
 //滑鼠游標離開 Applet 範圍之後  public void mouseExited(MouseEvent e){}

 //當滑鼠按下要執行的事情  public void mousePressed(MouseEvent e)
 {
  //記住滑鼠按下的位置   x = e.getX();
  y = e.getY();
  //更新螢幕顯示   repaint();
 }
 public void mouseReleased(MouseEvent e){}

 public void paint(Graphics g)
 {
  g.setColor(Color.blue);
  g.fillOval(x, y, 10, 10);
 }
}

package chapter16.lab5;
//與滑鼠產生互動
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class Sample5 extends Applet
{
 int x = 10;
 int y = 10;

 public void init()
 {
  //使用 MouseAdapter() 這個類別會讓相關設定更簡單   addMouseListener(new MouseAdapter()
  {
   public void mousePressed(MouseEvent e)
   {
    x = e.getX();
    y = e.getY();
    repaint();
   }
  });
 }

 public void paint(Graphics g)
 {
  g.fillOval(x, y, 10, 10);
 }
}

package chapter16.lab6;
//使用 AWT (Abstract Window Toolkit)
import java.applet.Applet;
import java.awt.Button;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

//實作 ActionListener , 來讓按鈕被按下執行某些動作 public class Sample6 extends Applet implements ActionListener
{
 Button bt;

 public void init()
 {
  bt = new Button("start");
  //接收按鈕被按下的準備工作   bt.addActionListener(this);
  //使用 add() 方法將它加到 Applet 上面   add(bt);
 }
 public void actionPerformed(ActionEvent ae)
 {
  //按鈕被按下的處理  bt.setLabel("stop");  }

}

package chapter16.lab7;//讓數字動起來
import java.applet.Applet;
import java.awt.Graphics;

public class Sample7 extends Applet implements Runnable
{
 int num;

 public void init()
 {
  Thread th;
  th = new Thread(this);
  th.start();
 }

 public void run()
 {
  try{
   for(int i=0; i<10; i++)
   {
    num = i;
    repaint();
    Thread.sleep(1000);
   }
  }
  catch(InterruptedException e){}

 }
 public void paint(Graphics g)
 {
  String str = "數字" + num + "!";
  g.drawString(str, 10, 10);
 }

}


星期一, 6月 20, 2011

20110620 Aresa 歡送會


************ 此為情緒流動線, 趕時間的朋友請跳過這段 ( 基本上這篇文章跳過也可以 ^^||)  ************************

每個人來拍照學攝影的想法不一樣
所以在論壇上面展現出來的感覺也會不一樣

到目前為止, 我還是很羨慕網站上面的先進輸入很棒的作品
在這邊我也要先謝謝 大俠攝影還有小佳老師 讓我有用相片說故事的能力

到目前為止, 我還是攝影的初學者 ^^
要像其他老師這樣輸出很棒的作品, 還有一段努力的距離

但是在這邊學攝影, 讓我感到很開心的是
我慢慢有了利用照片說故事的能力 ^^

以前拍照就是一張張的拍, 每張照片都是獨立的成品
彼此之間沒有絕對性的關聯, 甚至把不同時間的照片組合在一起
也可以成為一個組合.  在這邊學攝影, 覺得自己的進步與成長應該是

跟攝影的同好保持聯繫, 慢慢一點一滴的體驗攝影的方法
Post 曠世巨作, 對初學者的我, 目前還是太遠, 但是目前對我最開心的是
我可以開始利用照片, 把我想要表達的視野, 利用不熟練的技術慢慢地串連起來 ^^

利用控光( 沒那摩專業, 我只是會看 EV 值了^^ ), 利用構圖 ( 沒那摩專業, 我只是開始思考不同的角度來拍攝)
但是我開始可以將照片與照片之前串連在一起
我開始可以留住歡笑的感覺 ^^
對我, 這就是最棒的進步

-------------- ㄟ, 今天的重點不是 Aresa 回澳洲的歡送會嗎????? 果然又離題了 ^^|||
還是先謝謝 大俠還有俠女老師 給我們實習的環境
謝謝小佳老師基礎班的教導, 謝謝攝影同好的熱心與開心
受到感染, 非常開心 ^__^ ( 尤其是最近只能跟 程式碼為伍的我 .........Java~~ OH No)

************ 以下為正題  ************************

Aresa 要回澳洲了 ^^ ( 雖然是第一次認識她啦)
所以大家就準備幫 Aresa 辦一個歡送會
所以我們選了美美的三芝, 幫他辦歡送會

今天的天氣好的讓人覺得神奇

在吃飯之前, Ben 提議要先去婚紗廣場拍一下

首先更新我記憶的竟然是 他在我N 年沒有去的 "十八王公" 對面

到了都到了, 所以大家被迫在沒有補充卡路里的狀況拿起相機


我想剛從希臘回來的 Ben 看到這個只有無限鄉愁吧 ( 狀態顯示: 我要回希臘) (倣真度: 60%)


不過說真的, 有位美女老師( 狗腿模式顯示為 On )說: 跟他出去都會出景
我這個不常跟團的還真的有驗證到, 天空跟雲真的好美 ( 副作用為: 把人烤乾 Orz.......)

開始執行烤人乾作業程序 ( 聽到口令後, 散開平均被烤.....)


太陽,大大, 閃閃,亮亮 快樂的烤著我們
事後證明, 大家都想要跳到右邊冰冰的海 ^o^


這次出去據說是要互拍的, 所以就先偷拍一下慧慧...練練身手


小佳老師看到大家沒有很多戰鬥力
只好親身示範, 攝影戰鬥姿勢
首先, 調整好 AngryBird 射角 ( 目標可恨的山豬.....)

然後...........發射 (各位看倌, 看到攝影戰鬥強大的後座力了吧............別怕, 老師們都是練過的)


諮詢 Ben 真正希臘與假希臘的差異

學員要離開現場還要一一清點彈藥( 照片) ~咦
我只是來吃飯的還要交作業喔!! ( 設計對白)


Ben 的臨時提議 Miss Olive


目前想去的朋友可以過一陣子再去
因為他們目前更換管理者, 場地整理中, 泳池下不去

所以烤人乾系統正式登場


光了解 Menu 的中文意思就花了我們 30 Mins

跟攝影朋友與一般人出來最大的不同就是

一般人模式為, 拍正常的食物, 正常的角度 Like this



跟攝影的朋友出來模式會變成
(服務生表示..........OMG 沙拉都快被曬成熱吵了 XD..........還一個一個輪流)






拍到這邊, 我沙拉其實已經吃完了ㄟ~~~ XD
吃完之後
是的, 現場還 LightRoom 起來了

開始練習閃燈壓光 ( 首次體驗)
首先是要去澳洲的Aresa

大家現在的心裡都是.....................我只是來吃飯的不是嗎?? XD


閃燈練習 -- 慧慧


叫人家練習, 老師當然也要上場

同學們火力全開

這個時候小佳老師終於體認到 MD 不好當 ( 狀態為悔恨咬書中.......)


吃完飯後還要再拍 ^^ Ben 真的有無限的拍照動力








感謝大家
感謝攝影, 讓我們有快樂的一天

也感謝教導我的小佳老師, 大俠老師, 俠女老師

~ The End ~

20110619 Java 練習小記


package chapter14.lab1;
//超出陣列範圍但是還是指定資料
public class Sample1 {


public static void main(String[] args) {
int test[];
test = new int[5];

System.out.println("將值指定到test[10]");
//因為超出上面的陣列範圍, 所以會發生例外
test[10] = 80;

System.out.println("將80指定到test[10}");
System.out.println("沒有問題, 結束");


}


}


package chapter14.lab2;
//處理例外
public class Sample2 {

public static void main(String[] args) {
//指定一段程式碼, 偵測是否有例外狀況, 從try 開始
try{
int test[];
test = new int[5];
System.out.println("將值指定到test[10}");
test[10] = 80;
System.out.println("將80指定到 test[10]");
}
//如果有發生錯誤就會執行 catch 這一段程式碼
//catch(例外的類別 變數名稱)
catch(ArrayIndexOutOfBoundsException e){
System.out.println("超出陣列的範圍");
}
System.out.println("沒有問題");

}

}


package chapter14.lab3;
//加上 finally 程式區塊
public class Sample3 {

public static void main(String[] args) {
try{
int test[];
test = new int[5];
System.out.println("將值指定到test[10]");
test[10] = 80;
System.out.println("將 80 指定到test[10]");
}
catch(ArrayIndexOutOfBoundsException e){
System.out.println("超出陣列範圍");
}
//finally 與例外無關, 但是最後一定會執行
finally{
System.out.println("最後一定會執行");
}
System.out.println("沒有問題");

}

}


package chapter14.lab3;
//加上 finally 程式區塊
public class Sample3 {

public static void main(String[] args) {
try{
int test[];
test = new int[5];
System.out.println("將值指定到test[10]");
test[10] = 80;
System.out.println("將 80 指定到test[10]");
}
catch(ArrayIndexOutOfBoundsException e){
System.out.println("超出陣列範圍");
}
//finally 與例外無關, 但是最後一定會執行
finally{
System.out.println("最後一定會執行");
}
System.out.println("沒有問題");

}

}


package chapter14.lab5;
//宣告一個獨立的例外類別

class CarException extends Exception
{
}

class Car
{
private int num;
private double gas;
public Car()
{
num = 0;
gas = 0;
System.out.println("初始化汽車");
}
//預先宣告這個方法可能會拋出例外
public void setCar(int n, double g) throws CarException
{
if( g < 0)
{
//產生一個 CarException
CarException e = new CarException();
//使用 throws 宣告會有例外, 搭配 throw 拋出例外
throw e;
}
else
{
num = n;
gas = g;
System.out.println("設定車號為"+num+"設定油量為"+gas);
}
}
public void show()
{
System.out.println("車號為"+num);
System.out.println("油量為"+gas);
}
}

public class Sample5 {

public static void main(String[] args) {
Car car1 = new Car();
try{
car1.setCar(1234, -10.0);
}
catch(CarException e){
System.out.println(e+"已經拋出去了");
}
car1.show();

}

}


package chapter14.lab6;

import java.io.*;
//從鍵盤輸入資料

public class Sample6 {

public static void main(String[] args) {
System.out.println("請輸入字串");
try{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
System.out.println("已經輸入"+str);
}
catch(IOException e){
System.out.println("輸出入有誤");
}

}

}


package chapter14.lab7;
//把資料寫入到檔案裡面

import java.io.*;

public class Sample7 {

public static void main(String[] args) {
try{
//PrintWriter 類別: 輸入一行的字元串流
//BufferedWriter 類別: 透過buffer 寫入字元串流
//FileWriter 類別: 寫入檔案的字元串流, 執行後發現存放在專案的根目錄下
PrintWriter pw = new PrintWriter( new BufferedWriter(new FileWriter("test1.txt")));
pw.println("Hello!");
pw.println("GoodBye!");
System.out.println("寫入資料");
//關閉檔案
pw.close();
}
catch(IOException e){
System.out.println("輸出入錯誤");
}

}

}


package chapter14.lab8;
//從檔案讀取資料

import java.io.*;

public class Sample8 {

public static void main(String[] args) {
try{
//FileReader 類別: 讀取檔案的字元串流
//將檔案的內容暫時儲存到緩衝區
BufferedReader br = new BufferedReader( new FileReader("test1.txt"));
String str1 = br.readLine();
String str2 = br.readLine();
System.out.println("資料檔的2個字串是");
System.out.println(str1);
System.out.println(str2);
//關閉檔案
br.close();
}
catch(IOException e)
{
System.out.println("輸出入錯誤");
}

}

}


package chapter14.lab9;
//從檔案讀取大量資料

import java.io.*;

public class Sample9 {

public static void main(String[] args) {
try{
BufferedReader br = new BufferedReader(new FileReader("test2.txt"));
//宣告一個陣列長度為 8
int test[] = new int[8];
String str;
for(int i=0; i < test.length; i++)
{
//利用 for 迴圈來設定陣列值的內容
str = br.readLine();
System.out.println("Str="+str);
test[i] = Integer.parseInt(str);
}
int max = test[0];
int min = test[0];
System.out.println("先使用第一個陣列索引值當 max and min");
System.out.println("max="+max);
System.out.println("min="+min);
System.out.println("找出最高及最低分");
for (int i=0; i<test.length;i++)
{
System.out.println("max="+max);
System.out.println("min="+min);
System.out.println("test["+i+"]="+test[i]);
if(max < test[i])
{
System.out.println("max < test["+i+"],更改max為"+test[i]);
max = test[i];
}
if( min > test[i])
{
System.out.println("min > test["+i+"],更改min為"+test[i]);
min = test[i];
}
System.out.println(test[i]);
System.out.println("--------------------------");
}
System.out.println("最高分是"+max+"分");
System.out.println("最低分是"+min+"分");
br.close();
}
catch(IOException e)
{
System.out.println("輸出入錯誤");
}

}

}


package chapter14.lab10;
//使用命令列

import java.io.*;


public class Sample10 {

public static void main(String[] args) {
//檢查字串輸入的個數
if( args.length != 1)
{
System.out.println("請指定正確檔名");
System.exit(0);
}
try{
BufferedReader br = new BufferedReader( new FileReader(args[0]));
String str;
while( (str = br.readLine()) != null)
{
System.out.println(str);
}
br.close();
}
catch(IOException e)
{
System.out.println("輸出入錯誤");
}

}

}