Chương trình Java

Một phần của tài liệu Tài liệu VOL2_04_Q8_C&Java_translated pptx (Trang 59 - 63)

[Mô tả chương trình]

Giao diện CharIterator định nghĩa một thao tác trích rút lần lượt các kí tự (char) từ thể hiện của nó, độc lập với cấu trúc dữ liệu. Trong CharIterator, các phương thức sau được định nghĩa:

public char next()

Nếu kí tự tiếp theo tồn tại thì trả về ký tự đó. Nếu không tồn tại, ngoại lệ java.util.NoSuchElementException sẽ được ném ra. Ví dụ như nếu CharIterator có n kí tự, thì kí tự đầu tiên được trả về cho lần gọi đầu tiên, và kí tự thứ 2 được trả về cho lần gọi thứ 2. Bằng cách này, các kí tự lần lượt được trả về cho đến khi thực hiện lần gọi thứ n. Với lần gọi thứ n+1 hoặc sau đó, ngoại lệ NoSuchElementException sẽ được ném ra.

Chú ý rằng, NoSuchElementException là lớp con của java.lang.RuntimeException.

public boolean hasNext()

Nếu kí tự tiếp theo tồn tại thì trả về true. Ngược lại, trả về false.

Lớp CharIteratorFactory định nghĩa một phương thức trả về CharIterator phù hợp với kiểu dữ liệu của đối số.

Trong CharIteratorFactory, các phương thức sau được định nghĩa: public static CharIterator getCharIterator(String data)

Trả về CharIterator, trích rút lần lượt các kí tự từ đối số kiểu String. Nếu đối số truyền vào là null thì ngoại lệ NullPointerException được ném ra.

public static CharIterator getCharIterator(char[][] data)

Trả về CharIterator, trích rút lần lượt các kí tự từ đối số là một mảng của mảng (mảng kí tự 2 chiều) chứa các phần tử kiểu char. Nếu đối số truyền vào là null thì ngoại lệ NullPointerException được ném ra. Các kí tự được trích rút theo thứ tự tăng dần của giá trị chỉ số của mảng kí tự và mảng của nó. Ví dụ, với biến m, có kiểu char[][], các thành phần m[i][j] của nó được trích rút theo thứ tự tăng dần của i, và với i như nhau, thì theo thứ tự tăng dần của j.

Lớp CharIteratorTest là một chương trình chạy thử các phương thức được định nghĩa trong CharIteratorFactory. Kết quả thực thi của phương thức main được thể hiện ở hình dưới:

Tài liệu ôn thi FE Tập 2

-- Ôn tập phần thi buổi chiều --

Chương trình Java

Câu hỏi 5

'H' '1' '6''2' '0' '0' '4' '2' '0' '0' '4'

Kết quả thực thi của CharlteratorTest.main

[Chương trình 1]

public interface CharIterator { public boolean hasNext(); public char next();

}

[Chương trình 2]

import java.util.NoSuchElementException; public class CharIteratorFactory {

public static CharIterator getCharIterator(String data) { if (data == null)

throw new NullPointerException(); // Tạo và trả về một thể hiện của CharIterator // trả về lần lượt các kí tự từ dữ liệuString.

return A ;

}

public static CharIterator getCharIterator(char[][] data) { if (data == null)

throw new NullPointerException(); // Tạo và trả về một thể hiện củaCharIterator // trả về lần lượt các kí tự từ một mảng kí tự 2 chiều.

return B ;

} }

class StringCharIterator implements CharIterator { private String data;

private int index = 0;

StringCharIterator(String data) { this.data = data;

}

// Kiểm tra kí tự tiếp theo có tồn tại trong data hay không. public boolean hasNext() {

return C ;

}

public char next() {

// Nếu kí tự tiếp theo không tồn tại, ném ra ngoại lệNoSuchElementException. if (index >= data.length())

throw new NoSuchElementException(); // Trả về kí tự tiếp theo cho datavà cập nhật giá trị chỉ số.

return D ;

} }

class Char2DArrayCharIterator implements CharIterator { private char[][] data;

private int index1 = 0, index2 = 0; Char2DArrayCharIterator(char[][] data) {

this.data = data; }

public boolean hasNext() {

// Nếu phần tử của data[index1][index2]tồn tại, trả vềtrue.

// Nếu không, tìm phần tử tiếp theo.

// Nếu phần tử tiếp theo không tồn tại, trả vềfalse.

for (; index1 < data.length; index1++) { if (data[index1] != null

&& index2 < data[index1].length) { return true;

} Tài liệu ôn thi FE Tập 2

E ; }

return false; }

public char next() {

// Gọi phương thức hasNext để kiểm tra phần tử tiếp theo. Nếu tồn tại,

// phần tử đó được trả về, và cập nhật giá trị chỉ số.

// Nếu không có phần tử nào tồn tại, ngoại lệNoSuchElementExceptionđược ném ra.

if (hasNext()) {

return F ;

}

throw new NoSuchElementException(); }

[Chương trình 3]

public class CharIteratorTest {

public static void main(String[] args) { CharIterator itr = CharIteratorFactory.getCharIterator("H16"); printIterator(itr); itr = CharIteratorFactory.getCharIterator( new char[][] { { '2' }, { '0' }, null, { '0', '4' }}); printIterator(itr); }

private static void printIterator(CharIterator itr) { while (itr.hasNext()) { System.out.print("'" + itr.next() + "' "); } System.out.println(); } }

Câu hỏi con

Từ các nhóm câu trả lời sau, chọn câu trả lời đúng để chèn vào các ô trống trong chương trình trên.

Một phần của tài liệu Tài liệu VOL2_04_Q8_C&Java_translated pptx (Trang 59 - 63)

Tải bản đầy đủ (DOC)

(84 trang)
w