การใช้งาน String.split ร่วมกับข้อมูลจาก readLine

การใช้งาน 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();

}

}