1-D arrays: store, index, and traverse · Mảng 1-D: lưu trữ, truy cập theo chỉ mục và duyệt qua
Many values in one box
- An array holds many values of the same type in order.
- Until now one variable held one value. An array holds a whole list.
- For example, the test scores of a class can live in one
intarray.
Nhiều giá trị trong một hộp
- Một mảng chứa nhiều giá trị của cùng loại theo thứ tự.
- Cho đến nay, một biến chỉ chứa một giá trị. Một mảng chứa cả một danh sách.
- Ví dụ, điểm thi của một lớp có thể nằm trong một
intmảng.
Make an array with values
- If you know the values, list them in curly braces
{ }. - The type is the element type plus
[], likeint[]. - Java counts how many values you gave and makes the array that size.
Tạo một mảng có giá trị
- Nếu bạn biết các giá trị, hãy liệt kê chúng trong ngoặc nhọn
{ }. - Kiểu là kiểu phần tử cộng thêm
[], nhưint[]. - Java đếm xem bạn đã cung cấp bao nhiêu giá trị và tạo mảng có kích thước đó.
public class Main {
public static void main(String[] args) {
int[] scores = {90, 80, 70};
System.out.println(scores[0]); // 90
System.out.println(scores[2]); // 70
}
}
Index positions
- Each value has an index (its position). Indexes start at 0.
- So the first value is
scores[0], the second isscores[1], and so on. - You can also change a value:
scores[1] = 85;.
Vị trí chỉ mục
- Mỗi giá trị có một chỉ mục (vị trí của nó). Chỉ mục bắt đầu từ 0.
- Vậy giá trị đầu tiên là
scores[0], giá trị thứ hai làscores[1], v.v. - Bạn cũng có thể thay đổi một giá trị:
scores[1] = 85;.
public class Main {
public static void main(String[] args) {
int[] scores = {90, 80, 70};
scores[1] = 85; // change the middle value
System.out.println(scores[1]); // 85
}
}
Make an empty array
- Use
new int[n]to make an array ofnvalues. - Every
intslot starts at 0 automatically. - Then you fill the slots one by one.
Tạo một mảng trống
- Sử dụng
new int[n]để tạo mảng các giá trịn. - Mọi ô
intđều bắt đầu ở 0 một cách tự động. - Sau đó bạn điền các ô lần lượt.
public class Main {
public static void main(String[] args) {
int[] nums = new int[3]; // {0, 0, 0}
nums[0] = 5;
nums[1] = 6;
System.out.println(nums[0] + " " + nums[1] + " " + nums[2]); // 5 6 0
}
}
.length
array.lengthtells you how many values the array has.- Note: no parentheses — it is
scores.length, notscores.length(). - The last valid index is always
length - 1.
.length
array.lengthcho bạn biết mảng có bao nhiêu giá trị.- Lưu ý: không có ngoặc đơn — nó là
scores.length, không phảiscores.length(). - Chỉ mục hợp lệ cuối cùng luôn là
length - 1.
public class Main {
public static void main(String[] args) {
int[] scores = {90, 80, 70};
System.out.println(scores.length); // 3
System.out.println(scores[scores.length - 1]); // 70 (last value)
}
}
Traverse with a for loop
- To visit every value, loop the index from
0up tolength - 1. - Use
i < array.lengthas the stop test. - Below we add up every value.
Duyệt qua với vòng lặp for
- Để duyệt qua từng giá trị, hãy lặp lại chỉ mục từ
0đếnlength - 1. - Sử dụng
i < array.lengthnhư một điều kiện dừng. - Ở dưới đây, chúng ta cộng tổng tất cả các giá trị.
public class Main {
public static void main(String[] args) {
int[] scores = {90, 80, 70};
int total = 0;
for (int i = 0; i < scores.length; i++) {
total = total + scores[i];
}
System.out.println(total); // 240
}
}
Enhanced for loop
- The enhanced for (or "for-each") visits each value directly.
- Read it as: "for each
int vinscores". - Use it when you only need the values, not the index.
Vòng lặp for cải tiến
- Vòng lặp for (hoặc "for-each") duyệt qua từng giá trị trực tiếp.
- Đọc nó là: "cho mỗi
int vtrongscores". - Sử dụng nó khi bạn chỉ cần các giá trị, không cần chỉ mục.
public class Main {
public static void main(String[] args) {
int[] scores = {90, 80, 70};
int total = 0;
for (int v : scores) {
total = total + v;
}
System.out.println(total); // 240
}
}
Common mistakes
a.lengthhas no(); valid indexes run0toa.length - 1.- Going out of range throws ArrayIndexOutOfBoundsException.
Lỗi thường gặp
a.lengthkhông có(); các chỉ mục hợp lệ chạy từ0đếna.length - 1.- Vượt quá giới hạn sẽ ném ArrayIndexOutOfBoundsException.
Now you try
- Some tasks print a result; others complete a method the Harness calls.
- Remember: indexes start at 0, and the last index is
length - 1. - Press Run to compile, then Check answer.
Bây giờ bạn thử
- Một số bài tập in kết quả; những bài khác hoàn thành một phương thức mà Harness gọi.
- Hãy nhớ: chỉ mục bắt đầu từ 0, và chỉ mục cuối cùng là
length - 1. - Nhấn Run để biên dịch, sau đó nhấn Check answer.
A 1-D array, indexed · Một mảng 1-D, truy cập theo chỉ mục
An array stores values in order; reach one with a[i]. · Một mảng lưu các giá trị theo thứ tự; truy cập một phần tử bằng a[i].
The array nums is already filled. Use a loop to add up all its values and print the total on one line. For {4, 8, 15, 16, 23, 42} the output is 108. · Mảng nums đã được điền sẵn dữ liệu. Sử dụng vòng lặp để cộng tổng tất cả các giá trị của nó và in kết quả ra màn hình trên cùng một dòng. Đối với {4, 8, 15, 16, 23, 42}, kết quả đầu ra là 108.
Click Run to see the output here. · Nhấn Chạy để xem kết quả ở đây.
Complete sum(int[] a) so it returns the sum of all values in the array. An empty array should return 0. The checker calls it with several arrays. · Hoàn thiện sum(int[] a) sao cho nó trả về tổng của tất cả các giá trị trong mảng. Mảng rỗng nên trả về 0. Bộ kiểm tra sẽ gọi hàm này với nhiều mảng khác nhau.
Click Run to see the output here. · Nhấn Chạy để xem kết quả ở đây.
Complete doubleAll(int[] a). It does not return anything. Instead it changes the array in place so every value becomes twice as big. {1, 2, 3} becomes {2, 4, 6}. · Hoàn thiện doubleAll(int[] a). Hàm không trả về giá trị gì. Thay vào đó, nó thay đổi trực tiếp mảng ban đầu sao cho mỗi giá trị trở thành gấp đôi. {1, 2, 3} sẽ trở thành {2, 4, 6}.
Click Run to see the output here. · Nhấn Chạy để xem kết quả ở đây.