You are on page 1of 15

KHÓA HỌC JAVA CƠ BẢN

BÀI TỰ LUYỆN 4 – VÒNG LẶP


I. GIỚI THIỆU
 Vậy là bạn vừa kết thúc bài học: Vòng lặp (Loops) của khóa học Java cơ bản. Việc
học một ngôn ngữ lập trình cũng giống như việc học ngôn ngữ giao tiếp mới vậy.
Bạn không thể ngay lập tức thành thạo nó trong một thời gian ngắn - điều đó đòi
hỏi cả một quá trình. Bạn sẽ bắt đầu từ những điều đơn giản như ghi nhớ từ vựng,
sau đó là ngữ pháp hay việc sử dụng trong các trường hợp khác nhau… Và thời
điểm bạn thực sự thành thạo một thứ ngôn ngữ mới, đó là lúc bạn không còn phải
dịch nó ra nữa; mà bạn đã có thể suy nghĩ được bằng chính thứ ngôn ngữ đó. Điều
này hoàn toàn tương tự với việc học ngôn ngữ Java. Có thể một lúc nào đó, bạn
cần xử lý một vấn đề bằng ngôn ngữ lập trình Java, ngay lập tức bạn đã có thể hình
dung được những gì cần làm trong Java để giải quyết vấn đề. Tuy nhiên, để làm
được điều đó bạn cần phải luyện tập nhiều hơn nữa.
 Sau đây là những bài tập tự luyện mà chúng tôi chuẩn bị dành riêng cho bạn. Với
những bài tập này, bạn có thể rèn luyện thêm để củng cố kiến thức của mình
trước khi chuyển sang bài học tiếp theo.

II. CÁCH LÀM BÀI TỰ LUYỆN


 Việc có hoàn thành bài tự luyện này hay không phụ thuộc vào tính tự giác của bạn.
Đây là một cơ hội tốt để bạn tự kiểm tra và đánh giá lại kiến thức của mình. Một
số câu hỏi sẽ yêu cầu bạn phải kiểm tra lại code hoặc tính toán. Một số khác sẽ yêu
cầu bạn viết chương trình. Bạn có thể làm bài tự luyện bằng cách viết code trên
giấy khi in tài liệu này ra và viết chương trình vào những khoảng trống ngay dưới
đề. Bằng cách đó bạn có thể triển khai được ý tưởng của mình một cách tốt nhất.
Bạn cũng có thể sử dụng browxy.com để chạy thử chương trình, kiểm tra và khắc
phục các lỗi sai hay thử với những số liệu khác để hiểu rõ hơn cách chương trình
hoạt động. Bạn cũng có thể cài đặt các công cụ phát triển Java như JDK (Java
Development Kit), intelliJ và chạy thử chương trình của mình. Video hướng dẫn
cài đặt công cụ nằm ở cuối khóa học. Nếu bạn gặp rắc rối hoặc chỉ đơn giản là
muốn kiểm tra kết quả của mình đã thực sự chính xác hay chưa. Phần gợi ý và lời
giải sau mỗi câu hỏi sẽ là tài liệu tham khảo phù hợp.
III. PHẦN CÂU HỎI
1. Câu hỏi số 1: Đoạn code sau sẽ in ra kết quả bao nhiêu?
int n = 10;
while (n < 50) {
n = n * 2;
}
System.out.println(n);

A. 10
B. 40
C. 50
D. 80

2
 Đáp án: B. 40

3
2. Câu hỏi số 2: Xây dựng một hàm tính giai thừa của một số nguyên. Ví dụ, giai
thừa của 5 sẽ là 1 x 2 x 3 x 4 x 5 = 120.

4
 Đáp án:
 Đoạn code cho ví dụ trên:
public int giaiThua(int n) {
int giaiThua = 1;
for (int i = 1; i <= n; i++) {
giaiThua = giaiThua * i;
}
return giaiThua;
}

5
3. Câu hỏi số 3:
 Xây dựng một hàm thực hiện việc tìm kiếm xâu (biến kiểu String) trong mảng xâu.
Hàm này nhận 2 tham số đầu vào là một mảng xâu và một xâu. Hàm sẽ thực hiện
việc tìm kiếm trong mảng xâu. Nếu một phần tử nào đó của mảng có cùng giá trị
với xâu đầu vào, hàm sẽ trả về kết quả là chỉ số của phần tử đó trong mảng. Nếu
trong mảng xâu không có kết quả nào phù hợp, hàm sẽ trả về giá trị là -1.

public int timXau(String[] mangXau, String xauCanTim){


return i;
 Ví dụ, chúng ta có:
String[] mangXau = {"Lập Trình", "Java", "Kampus"};
int chiSo = timXau(mangXau, "Java");
System.out.println(chiSo);

 Chương trình sẽ cho ta kết quả là 1 được in trên màn hình vì phần tử có chỉ số 1 là
“Java” trùng với xâu cần tìm.
 Gợi ý: trong quá trình xây dựng hàm, bạn sẽ cần đối chiếu giữa phần tử của mảng
và xâu đang xét đến. Trong trường hợp này, toán tử so sánh == không phát huy
được tác dụng. Bạn sẽ cần dùng đến .equals()
Giả sử ta có:
String s = “Lập trình”;
mangXau[0] = “Lập trình”;

mangXau[0].equals(s) = true

6
 Đáp án:
 Đoạn code cho ví dụ trên:

public int timXau(String[] mangXau, String xauCanTim){


for (int i = 0; i < mangXau.length; i++) {
if (mangXau[i].equals(xauCanTim)) {
return i;
}
}
return -1;
}

7
4. Câu hỏi số 4: Tài khoản tiết kiệm có lãi suất 5% / năm. Bạn hãy xây dựng một hàm
Java để tính xem phải mất bao nhiêu năm để tài khoản tiết kiệm sẽ có giá trị
1.000.000.000 đồng. Hàm này nhận tham số đầu vào là số tiền gửi trong tài khoản
tiết kiệm và trả về giá trị là số năm để tiền trong tài khoản đạt 1.000.000.000 đồng
trở lên. (Gợi ý: Chúng ta cần tạo một vòng lặp thích hợp cho việc tính toán này.
Đối với những vòng lặp chưa xác định được sẽ phải lặp bao nhiêu lần thì vòng lặp
While sẽ là một lựa chọn hợp lý)

8
 Đáp án

Đoạn code cho ví dụ trên:

public int laiSuatNganHang(double soTienGui) {


int soNam = 0;
double tienHienTai = soTienGui;
while (tienHienTai < 1000000000) {
soNam++;
tienHienTai = tienHienTai * 1.05;
}
return soNam;
}

9
5. Câu hỏi số 5. Xây dựng một hàm trong Java để có thể in ra tất cả các phần tử trong
một mảng xâu theo thứ tự ngược lại. (Phần tử có chỉ số cao nhất được in trước,
tiếp đó là các phần tử có chỉ số thấp hơn,… cuối cùng là phần tử có chỉ số là 0).

 Ví dụ: Nếu một mảng String chứa các phần tử:


String[] s = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday"};

 Kết quả sau khi gọi hàm:


inNguoc(s);
 Sẽ in ra kết quả
Friday
Thursday
Wednesday
Tuesday
Monday
 Chúng ta sẽ bắt đầu khai báo cho hàm với:

public void inNguoc(String[] mangXau) {


}

 Gợi ý: Để giải quyết vấn đề này, bạn hãy sử dụng đến vòng lặp For theo một
phương thức khác. Lưu ý rằng, biến đếm được sử dụng trong vòng lặp không nhất
thiết phải bắt đầu từ số 0 và không phải lúc nào cũng tăng lên. Đối với trường hợp
này, bạn nên khởi tạo biến đếm với giá trị là lớn nhất, sau đó giảm dần giá trị của
bến đếm sau mỗi lần lặp bằng i--.

10
 Đáp án

Đoạn code cho ví dụ trên:

public void inNguoc(String[] mangXau) {


for (int i = mangXau.length - 1; i >= 0; i--) {
System.out.println(mangXau[i]);
}
}

11
6. Câu hỏi số 6: Xây dựng một hàm trong Java để tính toán độ lớn phạm vi của một
mảng các số nguyên (Xác định khoảng cách giữa số lớn nhất và số nhỏ nhất
trong mảng). Để làm được điều đó, bên trong hàm, bạn phải tìm giá trị nhỏ nhất
và giá trị lớn nhất bên trong mảng. Hàm sẽ trả về khoảng cách là giá trị lớn nhất
trừ đi giá trị nhỏ nhất.
 Ví dụ, ta có:
int[] mangNguyen = {1, 0, 2, 3, -1, 2};
 Khi ta gọi hàm:
timKhoangCach(mangNguyen)

Hàm sẽ trả về giá trị là 4. Vì giá trị lớn nhất trong mảng là 3, giá trị nhỏ nhất là -1
và 3 - (- 1) = 4.

 Code mở đầu:
public int timKhoangCach(int[] mangNguyen) {

12
 Đáp án

Đoạn code cho ví dụ trên:

public int timKhoangCach(int[] mangNguyen) {

int min = mangNguyen[0];


int max = mangNguyen[0];
for (int i = 1; i < mangNguyen.length; i++) {
if (mangNguyen[i] < min) {
min = mangNguyen[i];
}
if (mangNguyen[i] > max) {
max = mangNguyen[i];
}
}
return max - min;
}

13
7. Câu hỏi số 7: Đoạn code này sẽ in ra kết quả như thế nào?
int soHang = 3;
for (int i = 1; i <= soHang; i++) {
String inRa = "";
for (int j = 0; j < i; j++) {
inRa = inRa + "#";
}
System.out.println(inRa);
}

14
 Đáp án:
#
##
###

15

You might also like