星期一, 6月 20, 2011

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("輸出入錯誤");
}

}

}

沒有留言: