Vào ra dữ liệu trong Java từ bàn phím

Không giống như các ngôn ngữ khác ví như pascal, C/C++.. chúng có thể trực tiếp lấy giá trị từ bàn phím sau khi khai báo một biến. Java khó tính hơn hẳn! Nó cần một biến thuộc lớp Scanner và biến này phụ trách việc lấy giá trị mà người dùng nhập vào từ bàn phím

Để lấy giá trị mà người sử dụng nhập từ bàn phím, ta làm theo các bước sau:

1. Khai báo biến thuộc lớp Scanner. Lớp Scanner chỉ được hỗ trợ từ phiên bản Java 1.5 và nằm trong gói java.util.

Trước khi làm việc này chương trình cần khai báo thư viện như sau:

import java.util.*; /*dấu * thể hiện lấy tất cả các lớp có trong gói util có sẵn của java*/

// Khai báo một biến Scanner có tên là “nhap”.

Scanner nhap = new Scanner(System.in);

2. Lấy giá trị nhập vào:

System.out.print(“What is your name? “); /* In ra màn hình một câu hỏi tên. Nếu bạn viết println() thì sẽ tự động xuống dòng.

/* Khai báo và gán giá trị nhập từ bàn phím cho một biến kiểu String có tên name.*/

String name = nhap.nextLine();

Và sau đây là chương trình đơn giản đầu tiên làm quen với Java cũng như làm quen với cách lấy dữ liệu nhập vào, xuất dữ liệu kỳ quặc này nhé.

import java.util.*;
public class LuyenTap {
public static void main( String args[] ){
System.out.println(“Chung trinh gioi thieu ban than”);
Scanner nhapvao = new Scanner(System.in);
System.out.println(“what your name?”);
String name = nhapvao.nextLine();
System.out.println(“how old are you?”);
int age = nhapvao.nextInt();
System.out.println(“Hello “+name+”. really? you are “+age+” year old. I think you are younger”);
}
}

String name = nhapvao.nextLine(); /*nhập vào một dòng ký tự và gán vào biến name*/

int age = nhapvao.nextInt(); /*nhập vào một số có kiểu int và gán vào biến age */

System.out.println(“Hello “+name+”. really? you are “+age+” year old. I think you are younger”); /* để ý ở đây là các dấu + tương ứng với các ký tự << trong ngôn ngữ C++.

About these ads

55 thoughts on “Vào ra dữ liệu trong Java từ bàn phím

  1. uh, bạn vui lòng trả lời vào mail mình , bạn cho mình hỏi làm thế nào để nhập vào bằng tay ? Mình viết code giống bạn nhưng không bit nhập chỗ nào hết, mình mới begin thôi

  2. Bạn không biết nhập vào chỗ nào hết thì tôi cũng không biết nói thế nào, chỉ có thể băn khoăn không biết bạn dùng IDE nào? bạn dù dùng IDE nào cũng cần buil chương trình, nó chạy ra mang hình command line lúc đó mới nhập được dữ liệu từ bàn phím.
    công nghệ java rất rộng lơn, nếu bạn học java, tôi nghĩ bạn tự học nhiều thì mới có thể theo nó được, với cái bài này tôi gặp, bõ ngỡ lần đầu tiên nên nghĩ mọi người cũng sẽ như mình. Nhưng sau đó nếu bạn học java sâu hơn sẽ thấy người ta không mấy khi nhập dữ liệu như thế này nữa.

  3. đây là câu hỏi về String: mình có một string( ví dụ HelloWorld). bây giờ mình muốn kiểm tra 2 ký tự giống nhau đứng liền nhau(chữ l trong ví dụ) thì phải làm sao? giúp mình với! thank

  4. bây giờ người ta nếu có làm việc với java thì đâu có sử dụng việc ra vào từ bàn phím đâu mà mọi người thắc mắc nhiễu sự thế làmgif cho mất thời gian. Thời gian đó để đi nghiên cứu cái khác đi cha.

  5. /** minh viet ntn ma sao chay chuong trinh lai ko nhap duoc ten,sua mai ko dc,jup minh voi.thank!!!*/
    import java.util.*;
    //import java.lang.String.*;
    //package cho1;
    public class Hello {
    public static void main(String args[])
    {
    //String hoten;
    // float diem;
    System.out.println(“WECOME TO JAVA”);
    Scanner nhap=new Scanner(System.in);

    System.out.print(“Nhap thong tin so sinh vien n=: “);
    int n=nhap.nextInt();
    for(int i=1;i 0) {
    char s = hoten.charAt(0);
    System.out.println(“Your character is: ” + s);
    }
    else{
    System.out.println(“Null String”);
    }*/

    System.out.println(“Nhap diem :”);
    float diem = nhap.nextInt();
    //System.out.print(“”);
    // System.out.println(“”)

    }
    }

    }

  6. Bạn à. cái này đừng hỏi Gió mà. Bạn phải tự giải quyết trước đi chứ.
    for(int i=1;i 0) {
    char s = hoten.charAt(0);
    System.out.println(“Your character is: ” + s);
    Đoạn này vòng for có vấn đề nghiêm trọng! Xem lại nha bạn!

  7. System.out.print(” +Nhap nam sinh: “);
    namSinh=nhap.nextInt();
    System.out.println();
    System.out.print(” +Nhap gioi tinh: “);
    gTinh=nhap.nextLine();
    System.out.println();
    System.out.print(” +Nhap dia chi: “);
    diaChi=nhap.nextLine();

    các bạn ơi nếu viết đoạn code trên thì nó không cho nhập giới tính. Tớ thấy nó gần giống lỗi nhập dl trong C nhưng không biết cách sửa. Bạn nào biết thì giúp tớ với nhé! Thanks

  8. Rất là xin lỗi ban j Long, vì topic này không yêu cầu nội dung như bạn đưa lên, chính vì thế mà tôi sẽ xóa nó vào tối hôm nay. ngày 8/6/2010.

  9. for(int i=1;i 0) {
    char s = hoten.charAt(0);
    System.out.println(“Your character is: ” + s);

    Đoạn này lỗi ở chổ điều kiện cho vòng lặp chạy…vì for có 3 phần chính mà có thể rỗng nhưng vẫn phải đủ 3 phần.Ở trên thì chỉ có 2 phần mà lại ghi không rõ ràng nữa ” i 0 “.Đặc biệt ko có biến tăng giảm nên ko thể thực hiện lặp được.

  10. Mình gặp vấn đề về nhập xuất.Bậy giờ mình không biết làm thế nào để nhập ký tự vào mảng trong Java nữa.Nghiên cứu mày mò mà tìm ko ra code.Đây là câu hỏi có đặt ra ở trên rồi nhưng chưa có câu trả lời.Mong nhận được sự giúp đỡ.Có code xin demo cho mình nhé.Thanks!

  11. bạn ơi, cho mình hỏi tí xíu.
    cách viết hàm main như thế này, thì khác nhau điểm nào?
    public static void main(String args[])

    public static void main(String [] arg)
    mình dùng JDK 1.6.
    cái thứ 2 minh hỏi là: để nhập 1 ký tự thì mình dùng cách nào?
    câu lệnh của mình là: char ch = nhap.charAt(); theo như cách ở trên của bạn có vòng lặp for không đúng, nhưng nó không cho mình nhập, chương trình báo sai. không tìm thấy symbol charAt().
    mong là nhận được lời giải đáp của bạn!!

  12. hey. có biết cách nhập ký tự không đó. Không biết thì nói không biết trả lời vòng vo thế… bực quá đây.. đọc từ trên xuống dưới chẳng thấy nói gì cả…?

  13. giờ bạn muốn nhập kiểu gì, nhập như thế nào thì liên hệ với mình, qua mail hay yahoo nha, mình bữa hôm gửi cái bài hay lắm, mà nó không gửi được, mất công ngồi gõ cả buổi. nếu được thì liên hệ mình qua nick chucuoitimhangnga_1988@yahoo.com

  14. bạn gió ơi, sao mình gửi bài không được, ghét quá àh, mất công 2 lần ngồi viết cho đã, rồi gửi mà nó không được, hay tại nó ko cho mình viết dài??? huhu

  15. Bạn ơi, cho mình hỏi mình muốn chia nó ra thành các hàm nhỏ thì phải làm thế nào, vd như chia ra public void nhap(); public void in()…….

  16. Bạn ơi cho mình hỏi mình sao mình không nhập được dữ liệu vào đoạn code này vậy,khi chương trình chạy nó chỉ in ra dòng chữ chứ không cho nhập dữ liệu(mình mới học java nên biết rất ít về nó,mong các bạn giúp đỡ) :”System.out.println(“nhap ma so cua nguoi tra”);
    this.maSoTra=nhaps.nextLine();”

    package ungdung;
    import java.util.*;
    abstract class person{
    public String maSo;
    public String hoTen;
    public String ngaySinh;
    public boolean gioTinh;
    public person(String maSo,String hoTen,String ngaySinh,boolean gioTinh){
    this.maSo=maSo;
    this.hoTen=hoTen;
    this.ngaySinh=ngaySinh;
    this.gioTinh=gioTinh;
    }

    public void nhap(){
    Scanner nhap=new Scanner(System.in);
    System.out.println(“please ma so”);
    this.maSo=nhap.nextLine();
    System.out.println(“please enter fullname”);
    this.hoTen=nhap.nextLine();
    System.out.println(“please dateborm”);
    this.ngaySinh=nhap.nextLine();
    System.out.println(“please sex”);
    this.gioTinh=nhap.nextBoolean();
    }

    public void in(){
    System.out.println(“ma so cua ban \n”+this.maSo);
    System.out.println(“ho ten cua ban \n”+this.hoTen);
    System.out.println(“ngay sinh cua ban \n”+this.ngaySinh);
    System.out.println(“gioi tinh cua ban \n”+this.gioTinh);

    }
    }

    class InCome{
    public float soTien;
    public String maSoTra;
    public String maSoNhan;
    public String moTa;
    public InCome(float soTien,String maSoTra,String maSoNhan,String moTa){
    this.soTien=soTien;
    this.maSoTra=maSoTra;
    this.maSoNhan=maSoNhan;
    this.moTa=moTa;
    }

    public void nhapInCome(){

    Scanner nhaps=new Scanner(System.in);
    System.out.println(“nhap so tien”);
    this.soTien=nhaps.nextFloat();

    System.out.println(“nhap ma so cua nguoi tra”);
    this.maSoTra=nhaps.nextLine();

    System.out.println(“nhap ma so cua nguoi nhan”);
    this.maSoNhan=nhaps.nextLine();

    System.out.println(“nhap mo ta”);
    this.moTa=nhaps.nextLine();
    }

    public void printInCome(){
    System.out.println(“so tien la \n”+this.soTien);
    System.out.println(“ma so nguoi tra la \n”+this.maSoTra);
    System.out.println(“ma so nguoi nhan la \n”+this.maSoNhan);
    System.out.println(“mo ta ve khoan thu la \n”+this.moTa);
    }
    }
    public class UngDung {
    public static void main(String[] args) {
    InCome ic1=new InCome(230000,”jalj”,”kjajflk”,”nguyen viet cuong”);
    ic1.nhapInCome();
    ic1.printInCome();
    //float soTien,String maSoTra,String maSoNhan,String moTa
    }
    }

  17. Chương trình của bạn hoàn toàn bình thường mà. Không có lỗi gì cả. Bạn dùng IDE nào? Khi chạy chương trình thì dòng đầu tiên được in ra là: “nhap so tien” đúng không? lúc này bạn chỉ việc nhập một số tự nhiên vào thôi. Tất nhiên nếu bạn dùng netBeans chẳng hạn thì nhớ click chuột vào ô “output” nhé =))

  18. ở đây mình nhập số tiền và nhập mã người nhận bình thường chỉ có mã người trả là nó chỉ chạy ra dòng chữ thôi nó không cho mình nhập giá trị vào.
    khi mình run nó ra thế này đây:
    run:
    nhap so tien
    222
    nhap ma so cua nguoi tra
    nhap ma so cua nguoi nhan
    1212333
    nhap mo ta
    nguyen viet cuong
    so tien la
    222.0
    ma so nguoi tra la

    ma so nguoi nhan la
    1212333
    mo ta ve khoan thu la
    nguyen viet cuong
    BUILD SUCCESSFUL (total time: 25 seconds)

  19. Chúng ta đọc một chút về phương thức NextLine trong java nhé. Nó như sau: Advances this scanner past the current line and returns the input that was skipped. This method returns the rest of the current line, excluding any line separator at the end. The position is set to the beginning of the next line.
    Since this method continues to search through the input looking for a line separator, it may buffer all of the input searching for the line to skip if no line separators are present.
    Theo như trên thì cách giải quyết phải là loại bỏ đi phần còn lại (chính là ký tự enter) của dữ liệu được nhập vào từ bàn phím khi gọi: this.soTien=nhaps.nextFloat(); Khi gọi lệnh nextFload chương trình chỉ lấy các số fload mà ko lấy đi nốt ký tự enter! Ký tự enter này được lệnh NextInt() lấy và gán vào cho biến “maSoTra” khi bạn tiếp tục gọi this.maSoTra=nhaps.nextLine(); =))
    Loại bỏ bằng cách là:
    1) nhaps = new Scanner(System.in); (Cách này khi báo mới một đối tượng nhaps mới)
    hoawck cách thứ 2) String nextLine = nhaps.nextLine(); (cách này lấy dữ liệu còn sót lại và gán cho một biến trời ơi đất hỡi nào đó ko thèm quan tâm)
    Ok chưa nhok?

  20. mọi người cho mình hỏi cái này nữa với:
    mình khai báo một mảng
    private Vector ic; nằm trong class TaxLayer.
    còn đây là khai báo lớp InCome của mình.
    private float soTien;
    private String maSoNguoiTra;
    private String maSoNguoiNhan;
    private String moTa;
    và phương thức nhập trong InCome:
    public void nhapInCome(){
    Scanner nhapI=new Scanner(System.in);
    System.out.println(“nhap ma so nguoi tra”);
    setMaSoNguoiTra(nhapI.nextLine());
    System.out.println(“nhap ma so nguoi nhan”);
    setMaSoNguoiNhan(nhapI.nextLine());
    System.out.println(“nhap so tien”);
    setsoTien(nhapI.nextFloat());
    System.out.println(“nhap mo ta”);
    setMoTa(nhapI.nextLine());

    bây giờ mình muốn nhập phần tử cho mảng Vector ic thì nhập như thế nào.
    mong mọi người giúp mình với,mình không hiểu được cách sử dụng như thế nào cả.

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s