Kết quả 1 đến 4 của 4
  1. #1
    Ngày tham gia
    Jan 2015
    Bài viết
    0

    Bài 30: Sử dụng luồng ký tự trong Java

    /* bài viết thuộc loạt bài hướng dẫn trong "khóa học lập trình java miễn phí"
    trên diễn đàn android.vn, bạn có thể vào đây đọc

    để hiểu hơn về khóa học và tham gia ngay cùng mọi người */



    android.vn/attachments/download-jpg.22637/" border="0" alt="" />

    ở những bài trước, mình đã giới thiệu với các bạn việc sử dụng luồng byte để nhập và xuất dữ liệu ký tự. nhưng trong nhiều trường hợp luồng byte không phải là cách tốt nhất để quản lý nhập xuất dữ liệu ký tự. trong lập trình java có kiểu luồng ký tự phục vụ riêng cho việc nhập xuất dữ liệu trên luồng. mức trên cùng là 2 lớp trừu tường readerwriter. các lớp dẫn xuất từ reader writer hỗ trợ thao tác trên các luồng ký tự unicode.
    - những phương thức định nghĩa trong lớp trừu tượng





    bài này sẽ là nhập xuất ký tự và chuỗi sử dụng luồng ký tự, bài sau mình sẽ giới thiệu cách đọc ghi file dùng luồng ký tự!

    1, nhập console dùng luồng ký tự:

    - để đọc dữ liệu nhập từ console thì lớp tốt nhất là lớp bufferdreader. nhưng ở đây, chúng ta không có cách nào xây dựng 1 lớp bufferedreader trực tiếp từ system.in vì thế nên cần chuyển nó thành luồng ký tự bằng cách dùng inputstreamreader để chuyển byte thành ký tự!
    - để có được một đối tượng inputstreamreader gắn với system.in ta dùng constructor của inputstreamreader.
    inputstreamreader(inputstream inputstream)
    - tiếp theo dùng đối tượng inputstreamreader đã tạo ra để tạo ra một bufferedreader dùng constructor bufferedreader.
    bufferedreader(reader inputreader)

    **ví dụ 1: tạo một đối tượng bufferedreader gắn với bàn phím:
    bufferedreader br = new bufferedreader(new inputstreamreader(system.in));
    - sau khi thực hiện câu lệnh trên, br là một luồng ký tự gắn với console thông qua system.in.
    tiếp theo ta sẽ dùng bufferedreader để đọc từng ký tự từ console. việc đọc kết thúc khi gặp dấu chấm (dấu chấm để kết thúc chương trình).


    Mã nguồn PHP:
    [color=#000000]
    package javaandroidvn[/color][color=#007700]; [/color][color=#0000bb]import java[/color][color=#007700].[/color][color=#0000bb]io[/color][color=#007700].[/color][color=#0000bb]bufferedreader[/color][color=#007700];[/color][color=#0000bb]import java[/color][color=#007700].[/color][color=#0000bb]io[/color][color=#007700].[/color][color=#0000bb]ioexception[/color][color=#007700];[/color][color=#0000bb]import java[/color][color=#007700].[/color][color=#0000bb]io[/color][color=#007700].[/color][color=#0000bb]inputstreamreader[/color][color=#007700]; public class [/color][color=#0000bb]javaandroidvn [/color][color=#007700]{ public static [/color][color=#0000bb]void main[/color][color=#007700]([/color][color=#0000bb]string[/color][color=#007700][] [/color][color=#0000bb]args[/color][color=#007700]) [/color][color=#0000bb]throws ioexception [/color][color=#007700]{ [/color][color=#0000bb]char c[/color][color=#007700]; [/color][color=#0000bb]bufferedreader br [/color][color=#007700]= new [/color][color=#0000bb]bufferedreader[/color][color=#007700]( new [/color][color=#0000bb]inputstreamreader[/color][color=#007700]([/color][color=#0000bb]system[/color][color=#007700].[/color][color=#0000bb]in[/color][color=#007700])); [/color][color=#0000bb]system[/color][color=#007700].[/color][color=#0000bb]out[/color][color=#007700].[/color][color=#0000bb]println[/color][color=#007700]([/color][color=#dd0000]"nhập chuỗi ký tự, kết thúc bằng dấu chấm ."[/color][color=#007700]); do { [/color][color=#0000bb]c [/color][color=#007700]= ([/color][color=#0000bb]char[/color][color=#007700]) [/color][color=#0000bb]br[/color][color=#007700].[/color][color=#0000bb]read[/color][color=#007700](); [/color][color=#0000bb]system[/color][color=#007700].[/color][color=#0000bb]out[/color][color=#007700].[/color][color=#0000bb]println[/color][color=#007700]([/color][color=#0000bb]c[/color][color=#007700]); } while ([/color][color=#0000bb]c [/color][color=#007700]!= [/color][color=#dd0000]'.'[/color][color=#007700]); }}[/color] 
    **ví dụ 2: dùng bufferedreader đọc chuỗi ký tự từ console. in ký tự vừa nhập vào!


    Mã nguồn PHP:
    [color=#000000]
    package javaandroidvn[/color][color=#007700]; [/color][color=#0000bb]import java[/color][color=#007700].[/color][color=#0000bb]io[/color][color=#007700].[/color][color=#0000bb]bufferedreader[/color][color=#007700];[/color][color=#0000bb]import java[/color][color=#007700].[/color][color=#0000bb]io[/color][color=#007700].[/color][color=#0000bb]ioexception[/color][color=#007700];[/color][color=#0000bb]import java[/color][color=#007700].[/color][color=#0000bb]io[/color][color=#007700].[/color][color=#0000bb]inputstreamreader[/color][color=#007700]; public class [/color][color=#0000bb]javaandroidvn [/color][color=#007700]{ public static [/color][color=#0000bb]void main[/color][color=#007700]([/color][color=#0000bb]string[/color][color=#007700][] [/color][color=#0000bb]args[/color][color=#007700]) [/color][color=#0000bb]throws ioexception [/color][color=#007700]{ [/color][color=#ff8000]// tạo đối tượng bufferedreader sử dụng system.in [/color][color=#0000bb]bufferedreader br [/color][color=#007700]= new [/color][color=#0000bb]bufferedreader[/color][color=#007700](new [/color][color=#0000bb]inputstreamreader[/color][color=#007700]([/color][color=#0000bb]system[/color][color=#007700].[/color][color=#0000bb]in[/color][color=#007700])); [/color][color=#0000bb]string str[/color][color=#007700]; [/color][color=#0000bb]system[/color][color=#007700].[/color][color=#0000bb]out[/color][color=#007700].print([/color][color=#dd0000]"nhập chuỗi: "[/color][color=#007700]); [/color][color=#ff8000]//nhập chữ không dấu thôi nhé! [/color][color=#0000bb]str [/color][color=#007700]= [/color][color=#0000bb]br[/color][color=#007700].[/color][color=#0000bb]readline[/color][color=#007700](); [/color][color=#0000bb]system[/color][color=#007700].[/color][color=#0000bb]out[/color][color=#007700].[/color][color=#0000bb]println[/color][color=#007700]([/color][color=#dd0000]"chuỗi vừa nhập là: " [/color][color=#007700]+ [/color][color=#0000bb]str[/color][color=#007700]); }}[/color] 
    2, xuất dữ liệu ra console dùng luồng ký tự

    tiếp tục sẽ là 1 cách khác để xuất dữ liệu ra console. ở đây mình nhắc tới lớp prinwriter, nó là 1 trong các lớp luồng ký tự. ta cần phải chỉ định system.out cho luồng xuất.

    **ví dụ 3: tạo đối tượng printwriter để xuất dữ liệu ra console, dùng lệnh:
    printwriter pw = new printwriter(system.out, true);
    tiếp theo dùng printwriter để xuất dữ liệu ra console


    Mã nguồn PHP:
    [color=#000000]
    package javaandroidvn[/color][color=#007700]; [/color][color=#0000bb]import java[/color][color=#007700].[/color][color=#0000bb]io[/color][color=#007700].[/color][color=#0000bb]ioexception[/color][color=#007700];[/color][color=#0000bb]import java[/color][color=#007700].[/color][color=#0000bb]io[/color][color=#007700].[/color][color=#0000bb]printwriter[/color][color=#007700]; public class [/color][color=#0000bb]javaandroidvn [/color][color=#007700]{ public static [/color][color=#0000bb]void main[/color][color=#007700]([/color][color=#0000bb]string[/color][color=#007700][] [/color][color=#0000bb]args[/color][color=#007700]) [/color][color=#0000bb]throws ioexception [/color][color=#007700]{ [/color][color=#0000bb]int i [/color][color=#007700]= [/color][color=#0000bb]2013[/color][color=#007700]; [/color][color=#0000bb]string str [/color][color=#007700]= [/color][color=#dd0000]"android.vn "[/color][color=#007700]; [/color][color=#ff8000]//xuất dữ liệu sử dụng printwriter [/color][color=#0000bb]printwriter pw [/color][color=#007700]= new [/color][color=#0000bb]printwriter[/color][color=#007700]([/color][color=#0000bb]system[/color][color=#007700].[/color][color=#0000bb]out[/color][color=#007700], [/color][color=#0000bb]true[/color][color=#007700]); [/color][color=#0000bb]pw[/color][color=#007700].[/color][color=#0000bb]println[/color][color=#007700]([/color][color=#dd0000]"using a printwriter."[/color][color=#007700]); [/color][color=#0000bb]pw[/color][color=#007700].[/color][color=#0000bb]println[/color][color=#007700]([/color][color=#0000bb]str[/color][color=#007700]+[/color][color=#0000bb]i[/color][color=#007700]); }}[/color] 
    bài tập về nhà::d
    làm lại các ví dụ trên! mọi thắc mắc các bạn có thể bình luận phía dưới, mọi người cùng nhau thảo luận!

    (chú ý: các bạn nên tự giác làm bài tập, hoàn thiện rồi đăng lên, các bài bạn đã làm, nên để code trong thẻ code - chọn thẻ php cho rõ ràng và để ẩn code trong thẻ ẩn spoiler, để khi click vào mới hiện code lên , trước khi thử sức tự làm, bạn không nên nhìn code của các bạn khác đã đăng nhé)

    my facebook: https://www.facebook.com/tiasangmoi

    bài viết đăng lên diễn đàn khác vui lòng ghi rõ nguồn: android.vn

  2. #2
    Ngày tham gia
    Apr 2015
    Bài viết
    1
    tại sao khi mình ghi pw.print(str+i) thì nó lại không chạy mà bắt buộc phải là .println mọi người?

  3. #3
    Ngày tham gia
    Jan 2015
    Bài viết
    0
    Trích dẫn Gửi bởi zquangu112z
    tại sao khi mình ghi pw.print(str+i) thì nó lại không chạy mà bắt buộc phải là .println mọi người?
    mình cũng không rõ lắm nhưng theo mình là do khi sử dụng print() thì luồng ký tự không được đóng lại. khi sử dụng println() thì luồng ký tự được đóng lại bằng cách xuống dòng. trong ví dụ trên khi mình sử dụng print() và thêm câu lệnh pw.close(); thì chạy bình thường.
    còn tại sao phải close thì mình cũng không biết!
    p/s: em chỉ đưa ra ý kiến vậy thôi, các cao nhân đừng gạch đá em nhá!

  4. #4
    Ngày tham gia
    Apr 2014
    Bài viết
    0
    ở ví dụ 1 sao mình nhập dấu chấm chương trình ko kết thúc nhỉ.vẫn phải nhấn enter mới kết thúc =(((

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •