JavaRush /Blog Java /Random-VI /Luồng và chuỗi I/O trong Java
articles
Mức độ

Luồng và chuỗi I/O trong Java

Xuất bản trong nhóm
Một lớp từ thư viện gói Java được sử dụng để nhập dữ liệu Scanner. Luồng và chuỗi I/O trong Java - 1Lớp này phải được nhập vào chương trình nơi nó sẽ được sử dụng. Việc này được thực hiện trước khi lớp công khai bắt đầu trong mã chương trình. Lớp này có các phương thức để đọc ký tự tiếp theo của một loại nhất định từ luồng đầu vào tiêu chuẩn, cũng như để kiểm tra sự tồn tại của ký tự đó. Để làm việc với luồng đầu vào, bạn cần tạo một đối tượng của lớp Scanner , chỉ định trong quá trình tạo luồng đầu vào mà nó sẽ được liên kết với. Luồng đầu vào tiêu chuẩn (bàn phím) trong Java được biểu thị bằng một đối tượng - System.in. Và luồng đầu ra tiêu chuẩn (hiển thị) là một đối tượng đã quen thuộc với bạn System.out. Ngoài ra còn có một luồng tiêu chuẩn cho đầu ra lỗi - System.err, nhưng làm việc với nó nằm ngoài phạm vi khóa học của chúng tôi.
import java.util.Scanner; // импортируем класс
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in); // создаём an object класса Scanner
        int i = 2;
        System.out.print("Введите целое число: ");
        if(sc.hasNextInt()) { // возвращает истину если с потока ввода можно считать целое число
          i = sc.nextInt(); // считывает целое число с потока ввода и сохраняем в переменную
          System.out.println(i*2);
        } else {
          System.out.println("Вы ввели не целое число");
        }
    }
}
Phương thức hasNextDouble()được áp dụng cho một đối tượng của lớp Scannersẽ kiểm tra xem một số loại thực có thể được đọc từ luồng đầu vào hay không doublevà phương thức nextDouble()sẽ đọc nó. Nếu bạn cố đọc một giá trị mà không kiểm tra nó trước, bạn có thể gặp lỗi trong quá trình thực thi chương trình (trình gỡ lỗi sẽ không phát hiện trước lỗi đó). Ví dụ: hãy thử nhập một số thực vào chương trình bên dưới:
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        double  i = sc.nextDouble(); // если ввести букву s, то случится ошибка во время исполнения
        System.out.println(i/3);
    }
}
Ngoài ra còn có một phương pháp nextLine()cho phép bạn đọc toàn bộ chuỗi ký tự, tức là. chuỗi, có nghĩa là giá trị thu được thông qua phương thức này phải được lưu trữ trong một đối tượng lớp String. Trong ví dụ sau, hai đối tượng như vậy được tạo, sau đó đầu vào của người dùng được ghi lần lượt vào chúng, sau đó một chuỗi được hiển thị trên màn hình, thu được bằng cách kết hợp các chuỗi ký tự đã nhập.
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s1, s2;
        s1 = sc.nextLine();
        s2 = sc.nextLine();
        System.out.println(s1 + s2);
    }
}
Ngoài ra còn có một phương pháp hasNext()kiểm tra xem có ký tự nào còn lại trong luồng đầu vào hay không. Lớp này Stringcó rất nhiều phương thức hữu ích có thể áp dụng cho chuỗi (trước tên phương thức chúng ta sẽ chỉ ra loại giá trị mà nó trả về):
  1. int length()— trả về độ dài của chuỗi (số ký tự trong đó);
  2. boolean isEmpty()— kiểm tra xem chuỗi có trống không;
  3. String replace(a, b)— trả về một chuỗi trong đó ký tự a (chữ hoặc biến kiểu char) được thay thế bằng ký tự b;
  4. String toLowerCase()— trả về một chuỗi trong đó tất cả các ký tự trong chuỗi gốc được chuyển thành chữ thường;
  5. String toUpperCase()— trả về một chuỗi trong đó tất cả các ký tự trong chuỗi gốc được chuyển thành chữ hoa;
  6. boolean equals(s)— trả về true nếu chuỗi mà phương thức được áp dụng khớp với chuỗi được chỉ định trong đối số phương thức (bạn không thể so sánh bằng cách sử dụng toán ==tử chuỗi, giống như bất kỳ đối tượng nào khác);
  7. int indexOf(ch)— trả về chỉ số của ký tự ch trong một chuỗi (chỉ số là số thứ tự của ký tự, nhưng các ký tự được đánh số bắt đầu từ 0). Nếu không tìm thấy ký tự nào, nó sẽ trả về -1. Nếu một ký tự xuất hiện nhiều lần trong một chuỗi, nó sẽ trả về chỉ mục của lần xuất hiện đầu tiên.
  8. int lastIndexOf(ch)- tương tự như phương pháp trước, nhưng trả về chỉ số của lần xuất hiện cuối cùng nếu ký hiệu xuất hiện nhiều lần trong dòng.
  9. int indexOf(ch,n)— trả về chỉ mục của ký tự ch trong chuỗi, nhưng bắt đầu kiểm tra từ chỉ mục n (chỉ mục là số thứ tự của ký tự, nhưng các ký tự được đánh số bắt đầu từ 0).
  10. char charAt(n)— trả về mã của ký tự nằm trong dòng dưới chỉ số n (chỉ số là số sê-ri của ký tự, nhưng các ký tự được đánh số bắt đầu từ 0).
public class Main {
    public static void main(String[] args) {
        String s1 = "firefox";
        System.out.println(s1.toUpperCase()); // выведет «FIREFOX»
        String s2 = s1.replace('o', 'a');
        System.out.println(s2); // выведет «firefax»
        System.out.println(s2.charAt(1)); // выведет «i»
        int i;
        i = s1.length();
        System.out.println(i); // выведет 7
        i = s1.indexOf('f');
        System.out.println(i); // выведет 0
        i = s1.indexOf('r');
        System.out.println(i); // выведет 2
        i = s1.lastIndexOf('f');
        System.out.println(i); // выведет 4
        i = s1.indexOf('t');
        System.out.println(i); // выведет -1
        i = s1.indexOf('r',3);
        System.out.println(i); // выведет -1
    }
}
Một ví dụ về chương trình sẽ hiển thị chỉ mục của tất cả các khoảng trắng trong một dòng được người dùng nhập từ bàn phím:
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        for(int i=0; i < s.length(); i++) {
            if(s.charAt(i) == ' ') {
                System.out.println(i);
            }
        }
    }
}
Liên kết tới nguồn: Luồng và chuỗi I/O trong Java
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION