2013年7月14日 星期日

jAG304

Student 資料物件程式如下 :

import java.io.Serializable;

@SuppressWarnings({ "serial", "rawtypes" })
public class Student implements Serializable {
   private String name;
   private String id;
   private String address;
  
   public Student(String name,String id, String address){
       this.name=name;
       this.id=id;
       this.address=address;
   }
  
   public String getName() {
       return name;
   }
   public void setName(String name) {
       this.name = name;
   }
   public String getId() {
       return id;
   }
   public void setId(String id) {
       this.id = id;
   }
   public String getAddress() {
       return address;
   }
   public void setAddress(String address) {
       this.address = address;
   }

   public String toString(){
      return name+","+id+","+address;          
   }
  
   public boolean equals(Student x){
       return name.equals(x.name);
   }
  
   public int hashCode(){
       return name.hashCode();
   }

}

因 Student 資料物件要由 HashSet 集合物件處理, 並且還要儲存到檔案, 所以 Student 資料物件程式必須覆寫 equals() , HashCode 這二個方法, 以及宣告實作 Serializable 介面. 可是以下程式對於相同的 Student 資料物件, 一樣會收集, 請找出此問題 ?


import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class CreateMyClass {

    @SuppressWarnings({ "unchecked", "rawtypes" })
    public static void main(String[] args) {
        String [][] myclass = {
                {"Tony","123","456"},
                {"Rayn","345","890"},
                {"apple","001","65455"},
                {"apple","001","65455"}               
        };
        Set s = new HashSet();
       
        Student st=null;
        for(String[] x : myclass) {
            st = new Student(x[0],x[1],x[2]);
            s.add(st);
        }
       
        Iterator iter = s.iterator ();
        while (iter.hasNext ())
           System.out.println (iter.next ());
    }
}


2013年6月17日 星期一

雙劍1z0-803 基礎試題

請將以下試題依照 變數與資料型態, 運算命令, 流程控制命令, 陣列程式執行參數 範圍來分類, 並撰寫試題程式

試題 1 : My80301.java
試題 3 : My80303.java
試題 5 : My80305.java
試題 7 : My80307.java
試題 9 : My80309.java
試題 10 : My80310.java
試題 14 : My80314.java
試題 16 : My80316.java
試題 23 : My80323.java
試題 24 : My80324.java
試題 27 : My80327.java
試題 32 : My80332.java
試題 33 : My80333.java
試題 35 : My80335.java
試題 38 : My80338.java
試題 40 : My80340.java
試題 44 : My80344.java
試題 49 : My80349.java
試題 52 : My80352.java
試題 53 : My80353.java
試題 59 : My80359.java
試題 61 : My80361.java
試題 70 : My80370.java
試題 71 : My80371.java
試題 79 : My80379.java
試題 80 : My80380.java
試題 81 : My80381.java
試題 84 : My80384.java
試題 89 : My80389.java
試題 91 : My80391.java
試題 94 : My80394.java
試題 104 : My803104.java
試題 106 : My803106.java
試題 109 : My803109.java
試題 111 : My803111.java
試題 112 : My803112.java
試題 115 : My803115.java
試題 120 : My803120.java
試題 122 : My803122.java

2012年4月4日 星期三

練習題 2_6:計算薪水

計算員工薪水,底薪 : 25000,100000 以上 獎金 5%,300000 以上 獎金 7%,500000 以上 獎金 10%。

執行結果,如下。


程式碼,如下。

import java.util.Scanner;

public class EX2_6 {

    public static void main(String[] args) {
        Scanner stdIn = new Scanner(System.in);

        System.out.print("\n請輸入業績 》》》》》 ");
        double accomplishment = stdIn.nextDouble();

        double salary = 25000;
        double prize = 0;

        if (accomplishment >= 100000 && accomplishment < 300000) {
            prize = accomplishment * 0.05;
        } else if (accomplishment >= 300000 && accomplishment < 500000) {
            prize = accomplishment * 0.07;
        } else if (accomplishment >= 500000) {
            prize = accomplishment * 0.1;
        }

        System.out.println("本月薪資 : " + (salary + prize) + "(底薪:" + salary
                + " 獎金:" + prize + ")");

    }

}

練習題 2_5:月份英翻中

執行結果,如下。


程式碼,如下。

import java.util.Scanner;

public class EX2_5 {

    public static void main(String[] args) {
        Scanner stdIn = new Scanner(System.in);

        System.out.print(" 請輸入月份 》》》》》 ");
        String month = stdIn.next();

        String outStr = "輸入錯誤。";

        if ("1".equals(month)) {
            outStr = "Januery";
        } else if ("2".equals(month)) {
            outStr = "February";
        } else if ("3".equals(month)) {
            outStr = "March";
        } else if ("4".equals(month)) {
            outStr = "April";
        } else if ("5".equals(month)) {
            outStr = "May";
        } else if ("6".equals(month)) {
            outStr = "June";
        } else if ("7".equals(month)) {
            outStr = "July";
        } else if ("8".equals(month)) {
            outStr = "August";
        } else if ("9".equals(month)) {
            outStr = "Stptember";
        } else if ("10".equals(month)) {
            outStr = "October";
        } else if ("11".equals(month)) {
            outStr = "November";
        } else if ("12".equals(month)) {
            outStr = "December";
        }

        System.out.println(" 英文 》》》》》 " + outStr);
    }

}

練習題 2_4:比較兩數大小

執行結果,如下。


程式碼,如下。

import java.util.Scanner;

public class EX2_4 {

    public static void main(String[] args) {
        Scanner stdIn = new Scanner(System.in);

        System.out.print("請輸入正整數 A 》》》》》 ");
        int a = stdIn.nextInt();

        System.out.print("請輸入正整數 B 》》》》》 ");
        int b = stdIn.nextInt();

        String resultStr = "";
        if (a < 0 || b < 0) {
            resultStr = "數字不可以為負數。";
        } else {
            if (a > b) {
                resultStr = "A > B";

            } else if (a < b) {
                resultStr = "A < B";
            } else {
                resultStr = "A = B";
            }
        }

        System.out.println("\n" + resultStr);

    }

}

學習範例 2_7:判斷成績(2)

成績 100~90: A, 80~89:B, 70~79:C, 60~69:D, 60以下,不及格。

程式碼,如下。

import java.util.Scanner;
class P2_7{
    public static void main(String[] args){
        Scanner stdIn = new Scanner(System.in);
       
        System.out.print("請輸入成績 : ");
        int studentGrade = stdIn.nextInt();
       
        if(studentGrade > 100 || studentGrade < 0){
            System.out.println("輸入錯誤");
        }else if(studentGrade >= 90 && studentGrade <= 100){
            System.out.println("A");
        }else if(studentGrade >= 80 && studentGrade <= 89){
            System.out.println("B");
        }else if(studentGrade >= 70 && studentGrade <= 79){
            System.out.println("C");
        }else if(studentGrade >= 60 && studentGrade <= 69){
            System.out.println("D");
        }else {
            System.out.println("不及格。");
                }
    }
}

執行結果,如下。

2012年3月31日 星期六

練習題 2_3 : 判斷是否能整除

由鍵盤輸入 A、B兩數,判斷 A 是否能被B整除。

執行結果,如下。


程式碼,如下。

import java.util.Scanner;

public class EX2_3 {

    public static void main(String[] args) {
        Scanner std = new Scanner(System.in);
       
        System.out.println("請輸入任意兩個數字");
       
        System.out.print("數字 A 》》》》》 ");
        double x = std.nextDouble();
        System.out.print("數字 B 》》》》》 ");
        double y = std.nextDouble();
       
        if(x%y == 0){
            double times = x/y;
            System.out.println("A是B的" + times + " 倍。" );
        }else{
            System.out.println("A不可以被B整除。");
        }

    }
}