Hỏi về scanner trong java

Em có một thắc mắc là sao em học thì khi tạo một đối tượng thuộc lớp scanner thì có thể viết :

Scanner nhap = new Scanner(System.in);

code cụ thể em học:

public class Helloword {

    public static void main(String[] args) {
            String ten;

        Scanner nhap = new Scanner(System.in);// tạo đối tượng thuộc lớn scanner

            ten = nhap.next();// tạo một biến thuộc đối tượng nhập
        // nextline() in ra cả dòng
        // next() in nhưng phần tử nằm trước khoảng trắng

            System.out.println("tên tôi là: " + ten);
        }

 }

nhưng khi viết lên thì chương trình báo lỗi và gọi ý viết lại thành:

package nguyenmanh;

import java.util.Scanner;

public class Helloword {

    private static Scanner nhap; 

    public static void main(String[] args) {
        
        String ten;
        
        nhap = new Scanner(System.in);// tạo đối tượng thuộc lớn scanner

        ten = nhap.next();// tạo một biến thuộc đối tượng nhập
        // nextline() in ra cả dòng
        // next() in nhưng phần tử nằm trước khoảng trắng

        System.out.println("tên tôi là: " + ten);
    }

}

Tức là thay vì khai báo Scanner nhap=new scanner(system.in); thì nó bắt có 1 cái private static Scanner nhap;

Do hàm main là static
nên nó yêu cầu các field muốn dùng được trong hàm static này cũng phải static theo.

Còn nếu ko thì bạn có thể làm như sau

public class JavaApplication10 {

    private Scanner scan;
    
    public static void main(String[] args) {
        JavaApplication10 a = new JavaApplication10();
        a.scan = new Scanner(System.in);
    } 
}
2 Likes

Mình cũng không biết nhiều về java …
Bạn thay dòng ten = nhap.next();// tạo một biến thuộc đối tượng nhập
thành ten=nhap.nextLine();
thay dòng nhap = new Scanner(System.in);
thành Scanner nhấp=new Scanner(System.in);rồi thử lại
có lẽ ổn

1 Like

mình đã thử nhưng chương trình toàn gợi í là phải có cái: private static Scanner nhap;

và dưới là: nhap = new Scanner(System.in);

trong khi mình học thì vẫn là: Scanner nhap=new scanner(system.in)

Có gì khác nhau đâu :slight_smile:

nhưng mà cái bên trên khi nhập vào nó báo lỗi

Nhét cái khai báo scanner xuống main là đc mà ^^

mình nghĩ là bạn chỉ cần import java.util.Scanner lên trên trước class là được

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?