การใช้งาน String.split ร่วมกับข้อมูลจาก readLine
ตัวอย่าง 7.18 การแยกข้อมูลด้วย split เมื่ออ่านแฟ้มข้อมูลเข้ามาเป็น String
– ตัวอย่างแฟ้มข้อมูล data.txt แบบ csv (Comma Seperated Variable)
101,tom,2000,single
102,somchai,5000,married
import java.io.*;
class x {
public static void main (String args[]) throws IOException {
int i = 1;
int tot = 0;
String b;
String[] fields;
FileReader fin = new FileReader(“data.txt“);
BufferedReader bin = new BufferedReader (fin);
while ((b = bin.readLine()) != null) {
fields = b.split(“,”);
System.out.println(i + ” : ” + fields[0]);
System.out.println(“Name : ” + fields[1]);
System.out.println(“Salary : ” + fields[2]);
System.out.println(“Status : ” + fields[3]);
tot = tot + Integer.parseInt(fields[2]);
i = i + 1;
}
System.out.println(“Total : ” + tot);
fin.close();
}
}
ตัวอย่าง 7.19 การแยกข้อมูลด้วย split และ String แบบใช้ for
import java.io.*;
class x {
public static void main (String args[]) throws IOException {
int i = 1;
int tot = 0;
String b;
String[] fields;
FileReader fin = new FileReader(“data.txt“);
BufferedReader bin = new BufferedReader (fin);
while ((b = bin.readLine()) != null) {
fields = b.split(“,”);
for(int j=0;j<=3;j++) {
System.out.println(fields[j]);
}
tot = tot + Integer.parseInt(fields[2]);
i = i + 1;
}
System.out.println(“Total : ” + tot);
fin.close();
}
}
ตัวอย่าง 7.20 การอ่านข้อมูลและเขียนออกในรูป HTML
– การประมวลผล DOS>explorer data.htm
– สอนเพิ่มเรื่องหาผลรวมเงินเดือน
– สอนเพิ่มว่า <input type=radio onclick={alert(“a”);}>
– ตัวอย่างแฟ้มข้อมูล data.txt แบบ csv
101,tom,2000,single
102,somchai,5000,married
import java.io.*;
class x {
public static void main (String args[]) throws IOException {
int i = 1;
String b;
String[] fields;
FileReader fin = new FileReader(“data.txt”);
BufferedReader bin = new BufferedReader (fin);
FileOutputStream fout = new FileOutputStream(“data.htm”);
BufferedOutputStream bout = new BufferedOutputStream(fout,1024);
PrintStream pout = new PrintStream(bout);
pout.println(“<body bgcolor=yellow><table border=1 width=100%>”);
while ((b = bin.readLine()) != null) {
fields = b.split(“,”);
pout.println(“<tr>”);
pout.println(“<td>” + i +”</td>”);
pout.println(“<td>” + “ID = ” + fields[0]+”</td>”);
pout.println(“<td>” + “Name = ” + fields[1]+”</td>”);
pout.println(“<td>” + “Salary = ” + fields[2]+”</td>”);
pout.println(“<td>” + “Status = ” + fields[3]+”</td>”);
pout.println(“</tr>”);
i = i + 1;
}
pout.println(“</table></body>”);
fin.close();
pout.close();
}
}
ตัวอย่าง 7.21 การอ่านแฟ้มข้อมูลมาประมวลผล
– อ่านข้อมูลเก็บลงอาร์เรย์ แล้วนำไปเขียนลงแฟ้ม dataout.txt
– เพิ่มค่าให้ field เงินเดือนจากเดิมอีก 100 บาท
import java.io.*;
class x {
public static void main (String args[]) throws IOException {
int i = 0,d;
String b;
String[] fields;
String[] recs = {“”,””,””};
String patternStr = “,”;
//
FileReader fin = new FileReader(“data.txt”);
BufferedReader bin = new BufferedReader (fin);
while ((b = bin.readLine()) != null) {
recs[i] = b;
i = i + 1;
}
fin.close();
//
FileOutputStream fout = new FileOutputStream(“dataout.txt”);
BufferedOutputStream bout = new BufferedOutputStream(fout,1024);
PrintStream pout = new PrintStream(bout);
for(int j=0;j<i;j++) {
fields = recs[j].split(patternStr);
pout.print(fields[0]+”,”+fields[1]+”,”);
// d = Integer.valueOf(fields[2]).intValue() + 100;
// pout.print(Double.valueOf(fields[2]).doubleValue() + 100);
pout.print(Integer.parseInt(fields[2]) + 100);
pout.println(“,”+fields[3]);
}
pout.close();
}
}
ตัวอย่าง 7.22 การค้นหาข้อมูลในแฟ้มข้อความด้วย .equals( )
– รับค่าจากแป้นพิมพ์ด้วย System.in.read
– นำไปเลือกข้อมูลในแฟ้ม data.txt แล้วแสดงระเบียนที่ตรง
import java.io.*;
class x {
public static void main (String args[]) throws IOException {
int found=0;
char buf;
String b,g = “”;
String[] fields;
System.out.println(“Wait id and end character with [x]”);
buf = (char)System.in.read();
while (buf != ‘x’) {
g = g + buf;
buf = (char)System.in.read();
}
FileReader fin = new FileReader(“data.txt”);
BufferedReader bin = new BufferedReader (fin);
while ((b = bin.readLine()) != null) {
fields = b.split(“,”);
if (fields[0].equals(g)) {
System.out.println(fields[1]);
found = 1;
}
}
if (found == 0) System.out.println(“Not found”);
fin.close();
}
}
ตัวอย่าง 7.23 การค้นหาข้อมูลในแฟ้มข้อความด้วย .split( )
import java.io.*;
class x {
public static void main (String args[]) throws IOException {
int found=0;
String b,g = “”;
String[] fields;
System.out.println(“Wait string and enter”);
BufferedReader stdin;
stdin = new BufferedReader(new InputStreamReader(System.in));
g = stdin.readLine();
FileReader fin = new FileReader(“data.txt”);
BufferedReader bin = new BufferedReader (fin);
while ((b = bin.readLine()) != null) {
fields = b.split(g);
if (fields.length > 1) {
found = 1;
fields = b.split(“,”);
System.out.println(fields[0] + fields[1] + fields[2] + fields[3]);
// output = 101tom2000single
// b = 101,tom,2000,single
}
}
if (found == 0) System.out.println(“Not found”);
fin.close();
}
}
ตัวอย่าง 7.24 การผสานแฟ้มข้อความผ่านอาร์เรย์แบบอ่านแฟ้มเดียว
– แฟ้มพนักงาน data.txt : รหัส,ชื่อ,สกุล,สถานภาพ
31001,tom,dang,A
31002,boy,spy,R
31003,big,chem,A
– แฟ้มสถานะ เป็นอาร์เรย์ : สถานภาพ,คำอธิบายสถานภาพ
A,Active
R,Retire
import java.io.*;
class j0901 {
public static void main (String args[]) throws IOException {
int i = 0,t1,t2;
String b,status;
// same as String[] fields;
String fields[];
String[] recs1 = new String[10];
String[] recs2 = {“A,Active”,”R,Retire”};
String patternStr = “,”;
//
FileReader fin = new FileReader(“data.txt”);
BufferedReader bin = new BufferedReader (fin);
while ((b = bin.readLine()) != null) {
recs1[i] = b;
i = i + 1;
}
fin.close();
t1 = i;
t2 = recs2.length;
//
for(int j=0;j<t1;j++) {
fields = recs1[j].split(patternStr);
// fields1 = recs1[j].split(patternStr);
System.out.print(fields[0] + fields[1] + fields[2]+fields[3]);
status = fields[3];
for(int k=0;k<t2;k++) {
fields = recs2[k].split(patternStr);
// fields2 = recs2[k].split(patternStr);
// if (fields2[0].equals(fields1[3])) {
if (fields[0].equals(status)) {
System.out.println(fields[1]);
}
}
}
}
}
ตัวอย่าง 7.25 การผสานแฟ้มข้อความผ่านอาร์เรย์แบบอ่านแฟ้มสองแฟ้ม
– แฟ้มพนักงาน data.txt : รหัส,ชื่อ,สกุล,สถานภาพ
– แฟ้มสถานะ datas.txt : สถานภาพ,คำอธิบายสถานภาพ
import java.io.*;
class x {
public static void main (String args[]) throws IOException {
int i = 0,t1,t2;
String b,status;
String[] fields;
String[] recs1 = {“”,””,””,””,””,””};
String[] recs2 = new String[2];
FileReader fin = new FileReader(“data.txt”);
BufferedReader bin = new BufferedReader (fin);
while ((b = bin.readLine()) != null) {
recs1[i] = b;
i = i + 1;
}
fin.close();
t1 = i;
i = 0;
//
FileReader fin2 = new FileReader(“datas.txt”);
BufferedReader bin2 = new BufferedReader (fin2);
while ((b = bin2.readLine()) != null) {
recs2[i] = b;
i = i + 1;
}
fin2.close();
t2 = i;
//
for(int j=0;j<t1;j++) {
fields = recs1[j].split(“,”);
System.out.print(fields[0] + fields[1] + fields[2]+fields[3]);
status = fields[3];
for(int k=0;k<t2;k++) {
fields = recs2[k].split(“,”);
if (fields[0].equals(status)) {
System.out.println(fields[1]);
}
}
}
}
}
ตัวอย่าง 7.26 การผสาน 3 แฟ้มพนักงาน แฟ้มสถานะ และแฟ้มจังหวัด
– แฟ้มพนักงาน data.txt : รหัส,ชื่อ,สกุล,สถานภาพ
31001,tom,dang,A,bkk
31002,boy,spy,R,lp
31003,big,chem,A,lp
– แฟ้มสถานะ เป็นอาร์เรย์ : สถานภาพ,คำอธิบายสถานภาพ
A,Active
R,Retire
– แฟ้มจังหวัด เป็นอาร์เรย์ : รหัส,ชื่อจังหวัด
lp,Lampang
bkk,Bangkok
import java.io.*;
class x {
public static void main (String args[]) throws IOException {
int i = 0,t1,t2,t3;
String b,status,prov;
String[] fields;
String[] recs1 = {“”,””,””,””,””,””};
String[] recs2 = new String[2];
String[] recs3 = new String[2];
FileReader fin = new FileReader(“data.txt”);
BufferedReader bin = new BufferedReader (fin);
while ((b = bin.readLine()) != null) {
recs1[i] = b;
i = i + 1;
}
fin.close();
t1 = i;
i = 0;
//
FileReader fin2 = new FileReader(“datas.txt”);
BufferedReader bin2 = new BufferedReader (fin2);
while ((b = bin2.readLine()) != null) {
recs2[i] = b;
i = i + 1;
}
fin2.close();
t2 = i;
//
FileReader fin3 = new FileReader(“dataprov.txt”);
BufferedReader bin3 = new BufferedReader (fin3);
while ((b = bin3.readLine()) != null) {
recs3[i] = b;
i = i + 1;
}
fin3.close();
t3 = i;
//
for(int j=0;j<t1;j++) {
fields = recs1[j].split(“,”);
System.out.print(fields[0] + fields[1] + fields[2]+fields[3]);
status = fields[3];
prov = fields[4];
for(int k=0;k<t2;k++) {
fields = recs2[k].split(“,”);
if (fields[0].equals(status)) {
System.out.println(fields[1]);
}
}
for(int l=0;l<t3;l++) {
fields = recs3[l].split(“,”);
if (fields[0].equals(prov)) {
System.out.println(fields[1]);
}
}
}
}
}
ตัวอย่าง 7.27 วิเคราะห์ผลโพลล์แบบตัวแปรปกติ
// 101,1,0,1
// 102,0,0,1
import java.io.*;
class poll1 {
public static void main (String args[]) throws IOException {
int i=0;
int questionhave = 14;
int q1=0,q2=0,q3=0;
String b;
String[] fields;
String patternStr = “,”;
FileReader fin = new FileReader(“pollweb.txt”);
BufferedReader bin = new BufferedReader (fin);
while ((b = bin.readLine()) != null) {
fields = b.split(patternStr);
q1 += Integer.parseInt(fields[1]);
q2 += Integer.parseInt(fields[2]);
q3 += Integer.parseInt(fields[3]);
i = i + 1;
}
System.out.println(“Total questions: ” + i);
System.out.println(“1 | “+(q1 * 100 / i)+”%”);
System.out.println(“2 | “+(q2 * 100 / i)+”%”);
System.out.println(“3 | “+(q3 * 100 / i)+”%”);
fin.close();
}
}
ตัวอย่าง 7.28 วิเคราะห์ผลโพลล์แบบอาร์เรย์
// 101,1,0,1,0,1,1,1,1,1,0,1,0,0,1
// 102,1,0,1,1,1,1,1,0,1,0,0,1,1,1
import java.io.*;
class poll2 {
public static void main (String args[]) throws IOException {
int i=0;
int questionhave = 14;
int q[] = new int[questionhave];
String b;
String[] fields;
String patternStr = “,”;
FileReader fin = new FileReader(“pollweb.txt”);
BufferedReader bin = new BufferedReader (fin);
while ((b = bin.readLine()) != null) {
fields = b.split(patternStr);
// q[1] += Integer.parseInt(fields[1]);
// q[2] += Integer.parseInt(fields[2]);
// q[14] += Integer.parseInt(fields[14]);
for (int j=1;j<=questionhave-1;j++)
q[j] += Integer.parseInt(fields[j]);
i = i + 1;
}
System.out.println(“Total questions: ” + i);
// System.out.println(1+”:”+q[1]+” | “+(q[1] * 100 / i)+”%”);
// System.out.println(14+”:”+q[14]+” | “+(q[14] * 100 / i)+”%”);
for (int j=1;j<=questionhave-1;j++)
System.out.println(j+”:”+q[j]+” | “+(q[j] * 100 / i)+”%”);
fin.close();
}
}