ผลต่างระหว่างรุ่นของ "Java-examples"
Jittat (คุย | มีส่วนร่วม) (หน้าที่ถูกสร้างด้วย '=== Phone.java === <pre> public class Phone { private double credit; Phone(double inCredit) { credit = inCredit; } public double g…') |
|||
| (ไม่แสดง 5 รุ่นระหว่างกลางโดยผู้ใช้ 2 คน) | |||
| แถว 1: | แถว 1: | ||
| + | == Phone รุ่นแรก (ก่อนเบรค) == | ||
=== Phone.java === | === Phone.java === | ||
| − | < | + | <geshi lang="java"> |
public class Phone { | public class Phone { | ||
private double credit; | private double credit; | ||
| แถว 17: | แถว 18: | ||
} | } | ||
} | } | ||
| − | </ | + | </geshi> |
=== PrepaidPhone.java === | === PrepaidPhone.java === | ||
| − | < | + | <geshi lang="java"> |
public class PrepaidPhone extends Phone { | public class PrepaidPhone extends Phone { | ||
| แถว 34: | แถว 35: | ||
} | } | ||
} | } | ||
| − | </ | + | </geshi> |
=== PostpaidPhone.java === | === PostpaidPhone.java === | ||
| − | < | + | <geshi lang="java"> |
| − | |||
public class PostpaidPhone extends Phone { | public class PostpaidPhone extends Phone { | ||
| แถว 49: | แถว 49: | ||
} | } | ||
} | } | ||
| + | </geshi> | ||
| + | == Phone รุ่นสอง (หลังเบรค) == | ||
| + | |||
| + | === input/output === | ||
| + | <pre> | ||
| + | phone.dat | ||
| + | --------- | ||
| + | 3 | ||
| + | prepaid#0812345678:1000.00 | ||
| + | postpaid#0823456789:50 | ||
| + | prepaid#0888888888:20000000 | ||
| + | |||
| + | call.dat | ||
| + | -------- | ||
| + | 0812345678:5 | ||
| + | 0812345678:2 | ||
| + | 0823456789:1.5 | ||
| + | 0888888888:300 | ||
| + | 0823456789:12.5 | ||
| + | 0823456789:40.2 | ||
| + | |||
| + | output | ||
| + | ------ | ||
| + | 0812345678:954 | ||
| + | 0823456789:15.2 | ||
| + | 0888888888:199992323.5 | ||
</pre> | </pre> | ||
| + | |||
| + | === Codes === | ||
| + | |||
| + | ==== Phone.java ==== | ||
| + | <geshi lang="java"> | ||
| + | public class Phone { | ||
| + | private double credit; | ||
| + | private String number; | ||
| + | Phone(String num, double inCredit) { | ||
| + | credit = inCredit; | ||
| + | number = num; | ||
| + | } | ||
| + | Phone(String raw) { | ||
| + | decode(raw); | ||
| + | } | ||
| + | public void decode(String raw) { | ||
| + | // ... | ||
| + | } | ||
| + | |||
| + | public void call(double minute) { | ||
| + | credit -= callCost(minute); | ||
| + | } | ||
| + | double callCost(double minute) { return 0; } | ||
| + | |||
| + | public double getCredit() { return credit; } | ||
| + | public void setCredit(double credit) { | ||
| + | this.credit = credit; | ||
| + | } | ||
| + | public String getNumber() { | ||
| + | return number; | ||
| + | } | ||
| + | } | ||
| + | </geshi> | ||
| + | |||
| + | ==== PrepaidPhone.java ==== | ||
| + | <geshi lang="java"> | ||
| + | public class PrepaidPhone extends Phone { | ||
| + | |||
| + | public PrepaidPhone(String raw) { | ||
| + | super(raw); | ||
| + | } | ||
| + | |||
| + | PrepaidPhone(String num, double inCredit) { | ||
| + | super(num, inCredit); | ||
| + | } | ||
| + | |||
| + | protected double callCost(double minute) { | ||
| + | if(minute <= 1) | ||
| + | return 1; | ||
| + | else | ||
| + | return 1 + (minute - 1) * 0.5; | ||
| + | } | ||
| + | } | ||
| + | </geshi> | ||
| + | |||
| + | ==== PostpaidPhone.java ==== | ||
| + | <geshi lang="java"> | ||
| + | |||
| + | public class PostpaidPhone extends Phone { | ||
| + | |||
| + | public PostpaidPhone(String raw) { | ||
| + | super(raw); | ||
| + | } | ||
| + | |||
| + | PostpaidPhone(String num, double inCredit) { | ||
| + | super(num, inCredit); | ||
| + | } | ||
| + | |||
| + | public double callCost(double minute) { | ||
| + | return minute * 0.25; | ||
| + | } | ||
| + | } | ||
| + | </geshi> | ||
| + | |||
| + | ==== PhoneMain.java ==== | ||
| + | <geshi lang="java"> | ||
| + | public class PhoneMain { | ||
| + | |||
| + | static Phone buildPhone(String raw) { | ||
| + | String [] results = raw.split("#"); | ||
| + | if(results[0].equals("prepaid")) | ||
| + | return new PrepaidPhone(results[1]); | ||
| + | else | ||
| + | return new PostpaidPhone(results[1]); | ||
| + | } | ||
| + | |||
| + | static Phone findPhone(Phone [] phones, | ||
| + | String num) { | ||
| + | for(int i=0; i<phones.length; i++) | ||
| + | if(phones[i].getNumber().equals(num)) | ||
| + | return phones[i]; | ||
| + | return null; | ||
| + | } | ||
| + | |||
| + | static Phone [] readPhoneData() throws Exception { | ||
| + | BufferedReader in | ||
| + | = new BufferedReader( | ||
| + | new FileReader("c:/phone.dat")); | ||
| + | int phoneCount = Integer.parseInt(in.readLine()); | ||
| + | Phone [] phones = new Phone[phoneCount]; | ||
| + | for(int i=0; i<phoneCount; i++) { | ||
| + | String line = in.readLine(); | ||
| + | phones[i] = buildPhone(line); | ||
| + | } | ||
| + | return phones; | ||
| + | } | ||
| + | |||
| + | public static void main(String [] argv) { | ||
| + | } | ||
| + | } | ||
| + | </geshi> | ||
รุ่นแก้ไขปัจจุบันเมื่อ 06:28, 29 เมษายน 2553
เนื้อหา
Phone รุ่นแรก (ก่อนเบรค)
Phone.java
<geshi lang="java"> public class Phone { private double credit; Phone(double inCredit) { credit = inCredit; } public double getCredit() { return credit; } public void setCredit(double credit) { this.credit = credit; } public void call(double minute) { credit -= callCost(minute); } protected double callCost(double minute) { return 0; } } </geshi>
PrepaidPhone.java
<geshi lang="java"> public class PrepaidPhone extends Phone {
PrepaidPhone(double inCredit) { super(inCredit); }
protected double callCost(double minute) { if(minute <= 1) return 1; else return 1 + (minute - 1) * 0.5; } } </geshi>
PostpaidPhone.java
<geshi lang="java"> public class PostpaidPhone extends Phone {
PostpaidPhone(double inCredit) { super(inCredit); }
public double callCost(double minute) { return minute * 0.25; } } </geshi>
Phone รุ่นสอง (หลังเบรค)
input/output
phone.dat --------- 3 prepaid#0812345678:1000.00 postpaid#0823456789:50 prepaid#0888888888:20000000 call.dat -------- 0812345678:5 0812345678:2 0823456789:1.5 0888888888:300 0823456789:12.5 0823456789:40.2 output ------ 0812345678:954 0823456789:15.2 0888888888:199992323.5
Codes
Phone.java
<geshi lang="java"> public class Phone { private double credit; private String number; Phone(String num, double inCredit) { credit = inCredit; number = num; } Phone(String raw) { decode(raw); } public void decode(String raw) { // ... }
public void call(double minute) { credit -= callCost(minute); } double callCost(double minute) { return 0; }
public double getCredit() { return credit; } public void setCredit(double credit) { this.credit = credit; } public String getNumber() { return number; } } </geshi>
PrepaidPhone.java
<geshi lang="java"> public class PrepaidPhone extends Phone {
public PrepaidPhone(String raw) { super(raw); }
PrepaidPhone(String num, double inCredit) { super(num, inCredit); }
protected double callCost(double minute) { if(minute <= 1) return 1; else return 1 + (minute - 1) * 0.5; } } </geshi>
PostpaidPhone.java
<geshi lang="java">
public class PostpaidPhone extends Phone {
public PostpaidPhone(String raw) { super(raw); }
PostpaidPhone(String num, double inCredit) { super(num, inCredit); }
public double callCost(double minute) { return minute * 0.25; } } </geshi>
PhoneMain.java
<geshi lang="java"> public class PhoneMain {
static Phone buildPhone(String raw) { String [] results = raw.split("#"); if(results[0].equals("prepaid")) return new PrepaidPhone(results[1]); else return new PostpaidPhone(results[1]); }
static Phone findPhone(Phone [] phones, String num) { for(int i=0; i<phones.length; i++) if(phones[i].getNumber().equals(num)) return phones[i]; return null; }
static Phone [] readPhoneData() throws Exception { BufferedReader in = new BufferedReader( new FileReader("c:/phone.dat")); int phoneCount = Integer.parseInt(in.readLine()); Phone [] phones = new Phone[phoneCount]; for(int i=0; i<phoneCount; i++) { String line = in.readLine(); phones[i] = buildPhone(line); } return phones; }
public static void main(String [] argv) { } } </geshi>