การรับค่าบนแป้นพิมพ์ ด้วย BufferedReader

| ไอที | Java | 13391

การรับค่าบนแป้นพิมพ์ ด้วย BufferedReader ร่วมกับ InputStreamReader

ก่อนอื่นเราต้อง import java.io.* เพื่อบอกให้โปรแกรมทราบว่าเราต้องการใช้คลาสนี้

จะมีรูปแบบการเรียกใช้ ดังนี้

BufferedReader str = new BufferedReader(new InputStreamReader(System.in));

จากโค้ด เราจะเห็นว่าเราได้สร้างอ็อบเจ็คขึ้นมาชื่อว่า str ซึ่งเป็นออบเจ็คที่สร้างขึ้นจากคลาส BufferedReader ซึ่งในอ็อบเจ็คนี้ เราก็ได้สร้างออบเจ็คขึ้นมาอีกอ็อบเจ็คหนึ่ง เป็นอ็อบเจ็คที่สร้างขึ้นจากคลาส InputStreamReader ซึ่งอ็อบเจ็คนี้ได้รับค่า System.in ซึ่งหมายถึงแป้นพิมพ์นั่นเอง

เมื่อได้อ็อบเจ็คมาแล้ว เราจะใช้ method readLine(); เพื่อรับค่าเป็นสตริง มีวิธีการใช้ดังนี้

String s = str.readLine(); //อ่านออกมาเป็นสตริง
int i = str.read(); //คืนค่าเป็น int เป็นตัวเลข ASCII เพียงตัวแรกตัวเดียว

เมื่อมีการใช้ method เหล่านี้จะต้องมีการ กำหนดทิศทางของ Exception ขึ้นทุกครั้ง วิธีการที่ง่ายที่สุดก็คือ throws Exception หรือ throws IOException ไว้ที่หัว method เพื่อบอกว่าเมื่อเกิด Exception ขึ้น ให้โยนทิ้งได้เลย

เรามาดูตัวอย่างกันเลยดีกว่า

ตัวอย่างที่ 1

import java.io.*;
public class streamin {
    public static void main(String args[]) throws IOException{
        BufferedReader str = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("Insert Name : ");
        String s = str.readLine();
        System.out.println("Yourname " + s );
    }
}

Output ที่ได้คือ
Insert Name : แล้วเคอเซอร์จะหยุดเพื่อให้กรอกข้อมูล เช่น เรากรอก Doesystem บรรทัดต่อไปจะเป็น
Yourname Doesystem

ตัวอย่างที่ 2

import java.io.*;
public class streamin {
    public static void main(String args[]) {
        BufferedReader str = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("Insert Name : ");
        String s = "";
        try{
            s = str.readLine();
        }
        catch(Exception e){
            System.out.print(e);
        }
        System.out.println("Yourname " + s );
    }
}

Output ที่ได้คือ
output ที่ได้ในตัวอย่างนี้จะเหมือนกับตัวอย่างแรก แต่โปรแกรมนี้เมื่อเกิด Exception ขึ้นจะดักจับ และปริ้นออกหน้าจอว่า เกิด Exception ประเภทไหน ซึ่งต่างจากแบบแรกที่เมื่อเกิด Exception แล้ว จะทำการโยนทิ้งไป

ตัวอย่างที่ 3

import java.io.*;
public class streamin {
    public static void main(String args[]) throws IOException{
        BufferedReader str = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("Insert Number : ");
        int s = str.read();
        System.out.println("Convert to ACSII : " + s );
    }
}

Output ที่ได้คือ
Insert Number : 2
Convert to ACSII : 50

Insert Number : 234 
Convert to ACSII : 50

ตัวอย่างนี้รับค่าโดยใช้ method read() ซึ่งจะรับค่าจากแป้นพิมพ์เพียงตัวแรกตัวเดียว ถึงจะกรอกไปกี่ตัวก็ตาม รับแล้วจะคืนค่าเป็น int ซึ่งค่าที่ได้ คือค่าในรหัส ASCII

ดูตาราง ASCII ได้ที่ www.doesystem.com/f64115f363f48c2671cca53eefb98bd0/ตาราง-ASCII.htm

ตัวอย่างที่ 4

import java.io.*;
public class streamin {
    public static void main(String args[]) throws IOException{
        BufferedReader str = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("Insert String : ");
        char s = (char)str.read();
        System.out.println("First String : " + s );
    }
}

Output ที่ได้คือ
Insert String : 123456
First String : 1

Insert String : Doesystem
First String : D

Insert String : r
First String : r

ตัวอย่างนี้ เป็นการปรับใช้จากตัวอย่างที่ 2 นั่นคือ จากเป็นรหัส ASCII เราก็ทำการเปลี่ยนให้เป็นเป็นอักขระ

comments