Strings and nested loops · Strings và vòng lặp lồng nhau
Strings and nested loops
- A
Stringis a row of characters, each with a position (an index). - The first index is
0, and the last islength() - 1. - In this lesson you walk through a String one character at a time, and put loops inside loops.
Strings và vòng lặp lồng nhau
- Một
Stringlà một hàng ký tự, mỗi ký tự có một vị trí (chỉ số). - Chỉ số đầu tiên là
0, và chỉ số cuối cùng làlength() - 1. - Trong bài học này, bạn sẽ duyệt qua một String một ký tự tại một thời điểm, và đặt các vòng lặp bên trong các vòng lặp.
Traversing a String
s.length()gives the number of characters.s.charAt(i)gives the character at indexi.- Loop
ifrom0up tolength() - 1to visit every character.
Duyệt qua một String
s.length()trả về số lượng ký tự.s.charAt(i)trả về ký tự tại chỉ sối.- Lặp
itừ0đếnlength() - 1để truy cập mọi ký tự.
public class Main {
public static void main(String[] args) {
String s = "code";
for (int i = 0; i < s.length(); i++) {
System.out.println(s.charAt(i));
}
}
}
Counting characters
- You can count how many times a character appears.
- Use a counter that starts at
0. - A single character uses single quotes, like
'o'. Compare with==(chars, not Strings).
Đếm số ký tự
- Bạn có thể đếm xem một ký tự xuất hiện bao nhiêu lần.
- Sử dụng bộ đếm bắt đầu từ
0. - Một ký tự đơn lẻ sử dụng dấu ngoặc đơn, ví dụ
'o'. So sánh với==(chars, không phải Strings).
public class Main {
public static void main(String[] args) {
String s = "balloon";
int count = 0;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == 'o') {
count++;
}
}
System.out.println(count); // 2
}
}
Building a new String
- Start with an empty String
""and add characters with+. - Reading from the end to the start reverses the String.
- Each
+makes a longer String.
Xây dựng một String mới
- Bắt đầu với một String rỗng
""và thêm các ký tự với+. - Đọc từ cuối đến đầu sẽ đảo ngược String.
- Mỗi
+tạo ra một String dài hơn.
public class Main {
public static void main(String[] args) {
String s = "code";
String result = "";
for (int i = s.length() - 1; i >= 0; i--) {
result = result + s.charAt(i);
}
System.out.println(result); // edoc
}
}
Enhanced for (preview)
- For walking a String you usually need the index, so a normal
foris best. - But Java also has an enhanced for loop that visits items directly.
- You will use it a lot with arrays in lesson 8. Here is a small preview with text.
Enhanced for (xem trước)
- Để duyệt qua một String, bạn thường cần chỉ số, vì vậy một vòng lặp
forthông thường là tốt nhất. - Nhưng Java cũng có một vòng lặp enhanced for (for nâng cao) truy cập các mục trực tiếp.
- Bạn sẽ sử dụng nó rất nhiều với mảng trong bài học 8. Đây là một cái nhìn trước nhỏ với văn bản.
public class Main {
public static void main(String[] args) {
String[] words = {"hi", "there", "!"};
for (String word : words) {
System.out.println(word);
}
}
}
Nested loops
- A nested loop is a loop inside another loop.
- The inner loop runs all the way for each step of the outer loop.
- Below, the outer loop picks a row, and the inner loop prints stars in that row.
Vòng lặp lồng nhau
- Một vòng lặp lồng nhau là một vòng lặp nằm bên trong một vòng lặp khác.
- Vòng lặp bên trong chạy xuống hết cho mỗi bước của vòng lặp bên ngoài.
- Ở dưới đây, vòng lặp bên ngoài chọn một hàng, và vòng lặp bên trong in dấu sao trong hàng đó.
public class Main {
public static void main(String[] args) {
for (int row = 1; row <= 3; row++) {
String line = "";
for (int col = 1; col <= row; col++) {
line = line + "*";
}
System.out.println(line);
}
}
}
Common mistakes
- Strings are immutable — store the result of
s.substring(...)etc. s.length()is a method (with()), unlike an array's.length.
Lỗi thường gặp
- Strings là bất biến — lưu trữ kết quả của
s.substring(...)v.v. s.length()là một phương thức (với()), khác với.lengthcủa mảng.
Now you try
- Each task pre-fills the class skeleton — write your code inside main, or complete the method shown.
- Press Run to compile and run, then Check answer.
- Your code compiles and runs on the server, so even the first run is fast.
Bây giờ bạn thử
- Mỗi nhiệm vụ điền sẵn khung lớp — viết mã của bạn bên trong main, hoặc hoàn thành phương thức được hiển thị.
- Nhấn Chạy để biên dịch và chạy, sau đó Kiểm tra câu trả lời.
- Mã của bạn được biên dịch và chạy trên máy chủ, vì vậy ngay cả lần chạy đầu tiên cũng rất nhanh.
Indexing a String · Truy vấn index của String
Each char has an index from 0; substring takes a range. · Mỗi ký tự có một index bắt đầu từ 0; substring nhận vào một khoảng.
Complete countChar(String s, char c) so it returns how many times c appears in s. Use charAt and ==. For example countChar("balloon", 'o') is 2. · Hoàn thiện ⟨countChar(String s, char c)⟩ sao cho trả về số lần xuất hiện của ⟨c⟩ trong ⟨s⟩. Sử dụng ⟨charAt⟩ và ⟨==⟩. Ví dụ ⟨countChar("balloon", 'o')⟩ là ⟨2⟩.
Click Run to see the output here. · Nhấn Chạy để xem kết quả ở đây.
Complete reverse(String s) so it returns s with the letters in the opposite order. For example reverse("code") is "edoc". Build a new String with +. · Hoàn thiện ⟨reverse(String s)⟩ sao cho trả về ⟨s⟩ với các chữ cái bị đảo ngược. Ví dụ ⟨reverse("code")⟩ là ⟨"edoc"⟩. Xây dựng một String mới bằng ⟨+⟩.
Click Run to see the output here. · Nhấn Chạy để xem kết quả ở đây.
Use nested loops to print a triangle of stars: line 1 has one *, line 2 has two, line 3 has three, line 4 has four. Print each line with System.out.println. · Sử dụng vòng lặp lồng nhau để in một hình tam giác bằng dấu sao: dòng 1 có một ⟨*⟩, dòng 2 có hai, dòng 3 có ba, dòng 4 có bốn. In mỗi dòng bằng ⟨System.out.println⟩.
Click Run to see the output here. · Nhấn Chạy để xem kết quả ở đây.