Dđếm có bao nhiêu phần tử lẻ trong mảng java năm 2024

Nhập và số nguyên dương n, tiếp theo là n số nguyên lần lượt là các phần tử trong dãy a, cuối cùng là nhập số nguyên x, hãy đếm xem trong dãy a có bao nhiêu phần tử có giá trị bằng x. In ra số đó.

Ví dụ:

  • Test mẫu 1: Input Output 6 1 2 1 2 2 3 2 3 Với a = [1, 2, 1, 2, 2, 3]x = 2 thì kết quả là 3.
  • Test mẫu 2:
    
    
    Với a = [1, 2, 3] và `n`0 thì kết quả là `n`1.

Hướng dẫn bài tập.

Code mẫu:

Ngôn ngữ C++:

`

include<iostream>

using namespace std; int a[100001]; int main(){

int n, x;  
cin >> n;  
for (int i = 0; i < n; i++){  
    cin >> a[i];  
}  
cin >> x;  
int count = 0;  
for (int i = 0; i < n; i++){  
    if (a[i] == x){  
        count ++;  
    }  
}  
cout << count;  
return 0;  
}`

Thực tế là chúng ta đang tạo một mảng được biểu thị bằng dấu ngoặc vuông ở cả hai bên của biểu thức. Chúng có thể được chỉ định trước hoặc sau tên của biến tham chiếu. Dù bằng cách nào cũng sẽ hoạt động:

  
String [] birthdays = new String[10];  
String birthdays [] = new String[10];  

Nếu bạn muốn viết một cái gì đó vào một mảng, bạn cần chỉ định chỉ mục của ô mà giá trị sẽ được ghi. Các hộp trong một mảng được đánh số bắt đầu từ 0. Việc đếm bắt đầu từ 0 là một thực tế rất phổ biến trong lập trình. Làm quen càng nhanh càng tốt :)

Dđếm có bao nhiêu phần tử lẻ trong mảng java năm 2024
Điều này có nghĩa là nếu bạn muốn đặt một giá trị nào đó vào ô đầu tiên , bạn làm như sau:
  
public class Main {
   public static void main(String[] args) {
       String birthdays [] = new String[10];  
       birthdays[0] = "Jana Russell, March 12";  
   }  
}  

Giờ đây, ngày sinh của Jana được lưu trữ trong ô đầu tiên của mảng ngày sinh của nhân viên: Bạn có thể thêm các giá trị khác theo cách tương tự:

  
public class Main {
   public static void main(String[] args) {
       String birthdays [] = new String[10];  
       birthdays[0] = "Jana Russell, March 12";  
       birthdays[1] = "Landon Chan, May 18";  
       birthdays[7] = "Rosie Mills, January 3";  
   }  
}  

Lưu ý rằng chúng tôi đã thêm ngày sinh nhật của Rosie vào ô thứ tám (bạn không quên tại sao Ô số 7 lại là ô thứ tám chứ?) . Bạn có thể thấy rằng chúng tôi chưa điền vào tất cả các ô khác. Chúng ta không cần phải viết các giá trị vào một mảng theo thứ tự. Không có yêu cầu như vậy. Tất nhiên, việc viết các phần tử theo thứ tự sẽ giúp bạn dễ dàng theo dõi xem có bao nhiêu hộp trống và bao nhiêu hộp bị chiếm dụng, đồng thời ngăn không cho mảng có "lỗ hổng". Nếu bạn muốn lấy nội dung của một trong các hộp, thì (giống như với hộp ký gửi an toàn), bạn cần biết số của nó. Đây là cách mà nó được hoàn thành:

  
public class Main {
   public static void main(String[] args) {
       String birthdays [] = new String[10];  
       birthdays[0] = "Jana Russell, March 12";  
       birthdays[1] = "Landon Chan, May 18";  
       birthdays[7] = "Rosie Mills, January 3";
       String rosieBirthday = birthdays[7];  
       System.out.println(rosieBirthday);  
   }  
}  

Đầu ra của bảng điều khiển: Rosie Mills, ngày 3 tháng 1 Chúng tôi đã tạo một

  
String [] birthdays = new String[10];  
String birthdays [] = new String[10];  

5biến và nói với trình biên dịch: "Tìm ô có chỉ số 7 trong mảng sinh nhật và gán giá trị chứa trong đó cho biến

  
String [] birthdays = new String[10];  
String birthdays [] = new String[10];  

5rosieBirthday " . Và đó chính xác là những gì nó đã làm. Khi làm việc với mảng, chúng ta có thể dễ dàng tìm thấy độ dài của chúng bằng một thuộc tính đặc biệt: độ dài .

  
public class Main {
   public static void main(String[] args) {
       String birthdays [] = new String[10];  
       birthdays[0] = "Jana Russell, March 12";  
       birthdays[1] = "Landon Chan, May 18";  
       birthdays[7] = "Rosie Mills, January 3";
       int birthdaysLength = birthdays.length;  
       System.out.println(birthdaysLength);  
   }  
}  

Đầu ra của bảng điều khiển: 10 Lưu ý:

  
String [] birthdays = new String[10];  
String birthdays [] = new String[10];  

7Thuộc tính lưu trữ kích thước mảng, không phải số hộp đã đầy. Mảng của chúng tôi chỉ lưu trữ 3 giá trị, nhưng chúng tôi đã chỉ ra kích thước của nó là 10 khi chúng tôi tạo nó. Và đây chính xác là giá trị mà

  
String [] birthdays = new String[10];  
String birthdays [] = new String[10];  

7trường trả về. Tại sao điều này sẽ có ích? Chà, giả sử bạn muốn hiển thị danh sách tất cả các ngày sinh nhật (để xác minh rằng không có ai bị quên). Bạn có thể làm điều này trong một vòng lặp đơn giản:

  
public class Main {
   public static void main(String[] args) {
       String birthdays [] = new String[10];  
       birthdays[0] = "Jana Russell, March 12";  
       birthdays[1] = "Landon Chan, May 18";  
       birthdays[2] = "Jeremiah Leonard, July 12";  
       birthdays [3] = "Kenny Russo, September 7";  
       birthdays[4] = "Tommie Barnes, November 9";  
       birthdays [5] = "Roman Baranov, August 14";  
       birthdays [6] = "Chanice Andersen, April 1";  
       birthdays[7] = "Rosie Mills, January 3";  
       birthdays [8] = "Keenan West, October 19";  
       birthdays [9] = "Abraham McArthur, May 3";
       for (int i = 0; i < birthdays.length; i++) {  
           System.out.println(birthdays[i]);  
       }  
   }  
}  

Trong vòng lặp, chúng ta khai báo biến

  
String [] birthdays = new String[10];  
String birthdays [] = new String[10];  

9, được khởi tạo bằng 0. Tại mỗi lần vượt qua, chúng ta lấy phần tử có chỉ số i từ mảng của mình và hiển thị giá trị của nó. Vòng lặp sẽ thực hiện 10 lần lặp và tôi sẽ tăng từ 0 lên 9—và các số tình cờ là chỉ số của các phần tử trong mảng của chúng ta! Kết quả là, chúng tôi sẽ hiển thị tất cả các giá trị từ ngày sinh nhật[0] đến ngày sinh nhật[9] Trên thực tế, có một cách khác để bạn có thể tạo một mảng. Ví dụ: bạn có thể tạo một mảng

  
public class Main {
   public static void main(String[] args) {
       String birthdays [] = new String[10];  
       birthdays[0] = "Jana Russell, March 12";  
   }  
}  

0s như sau:

  
public class Main {
   public static void main(String[] args) {  
       int numbers [] = {7, 12, 8, 4, 33, 79, 1, 16, 2};  
   }  
}  

Kỹ thuật này được gọi là "khởi tạo phím tắt". Nó khá thuận tiện, bởi vì chúng tôi đồng thời tạo một mảng và điền vào đó các giá trị. Chúng tôi không phải chỉ định rõ ràng kích thước mảng: với khởi tạo phím tắt, trường

  
String [] birthdays = new String[10];  
String birthdays [] = new String[10];  

7được đặt tự động.

  
public class Main {
   public static void main(String[] args) {  
       int numbers [] = {7, 12, 8, 4, 33, 79, 1, 16, 2};  
       System.out.println(numbers.length);  
   }  
}  

Đầu ra của bàn điều khiển: 9 Bây giờ, một chút về cách các mảng được lưu trữ trong bộ nhớ. Giả sử chúng ta có một mảng gồm ba

  
public class Main {
   public static void main(String[] args) {
       String birthdays [] = new String[10];  
       birthdays[0] = "Jana Russell, March 12";  
   }  
}  

2đối tượng:

  
public class Cat {
   private String name;
   public Cat(String name) {  
       this.name = name;  
   }
   public static void main(String[] args) {
       Cat[] cats = new Cat[3];  
       cats[0] = new Cat("Thomas");  
       cats[1] = new Cat("Behemoth");  
       cats[2] = new Cat("Lionel Messi");  
   }  
}  

Bạn cần hiểu một vài điều ở đây:

  1. Trong trường hợp nguyên thủy, một mảng lưu trữ một tập hợp các giá trị cụ thể (ví dụ:

    public class Main { public static void main(String[] args) {

       String birthdays [] = new String[10];  
       birthdays[0] = "Jana Russell, March 12";  
    
    } }

    0s). Trong trường hợp đối tượng, một mảng lưu trữ một tập hợp các tham chiếu . Mảng

    public class Main { public static void main(String[] args) {

       String birthdays [] = new String[10];  
       birthdays[0] = "Jana Russell, March 12";  
    
    } }

    4bao gồm ba phần tử, mỗi phần tử là một tham chiếu đến một

    public class Main { public static void main(String[] args) {

       String birthdays [] = new String[10];  
       birthdays[0] = "Jana Russell, March 12";  
    
    } }

    2đối tượng. Mỗi tham chiếu trỏ đến địa chỉ bộ nhớ nơi lưu trữ đối tượng tương ứng.
  2. Các phần tử của mảng được sắp xếp trong một khối duy nhất trong bộ nhớ. Điều này được thực hiện để cho phép chúng được truy cập nhanh chóng và hiệu quả.

Do đó,

  
public class Main {
   public static void main(String[] args) {
       String birthdays [] = new String[10];  
       birthdays[0] = "Jana Russell, March 12";  
   }  
}  

4tham chiếu khối bộ nhớ nơi lưu trữ tất cả các đối tượng (phần tử mảng).

  
public class Main {
   public static void main(String[] args) {
       String birthdays [] = new String[10];  
       birthdays[0] = "Jana Russell, March 12";  
   }  
}  

7tham chiếu đến một địa chỉ cụ thể trong khối này.

Dđếm có bao nhiêu phần tử lẻ trong mảng java năm 2024
Điều quan trọng là phải hiểu rằng một mảng không chỉ lưu trữ các đối tượng: bản thân nó là một đối tượng. Điều này khiến chúng ta đặt câu hỏi liệu chúng ta có thể tạo không chỉ mảng chuỗi hoặc số mà còn cả mảng mảng . Và câu trả lời là có, chúng ta có thể! Một mảng có thể lưu trữ bất kỳ đối tượng nào, kể cả các mảng khác. Một mảng như vậy được gọi là mảng hai chiều . Nếu chúng ta biểu diễn nó một cách trực quan, nó sẽ rất giống với một cái bàn bình thường. Giả sử, chúng ta muốn tạo một mảng gồm 3 mảng , mỗi mảng có thể lưu trữ 10
  
public class Main {
   public static void main(String[] args) {
       String birthdays [] = new String[10];  
       birthdays[0] = "Jana Russell, March 12";  
   }  
}  

0s. Nó sẽ trông như thế này:

Dđếm có bao nhiêu phần tử lẻ trong mảng java năm 2024

Mỗi dòng đại diện cho một

  
public class Main {
   public static void main(String[] args) {
       String birthdays [] = new String[10];  
       birthdays[0] = "Jana Russell, March 12";  
   }  
}  

0mảng. Mảng đầu tiên chứa các số từ 1 đến 10, mảng thứ hai — từ -1 đến -10 và mảng thứ ba — một tập hợp các số ngẫu nhiên. Mỗi mảng này được lưu trữ trong các hộp của mảng hai chiều của chúng ta. Trong mã, việc khởi tạo một mảng hai chiều trông như thế này:

  
String [] birthdays = new String[10];  
String birthdays [] = new String[10];  

0

Mèo mảng hai chiều của chúng tôi lưu trữ 3 mảng với 5 hộp trong mỗi mảng. Nếu chúng ta muốn đặt một đối tượng vào ô thứ ba của mảng thứ hai, chúng ta sẽ làm như sau:

  
String [] birthdays = new String[10];  
String birthdays [] = new String[10];  

1

  
public class Main {
   public static void main(String[] args) {
       String birthdays [] = new String[10];  
       birthdays[0] = "Jana Russell, March 12";  
       birthdays[1] = "Landon Chan, May 18";  
       birthdays[7] = "Rosie Mills, January 3";  
   }  
}  

0chỉ mảng thứ hai, và

  
public class Main {
   public static void main(String[] args) {
       String birthdays [] = new String[10];  
       birthdays[0] = "Jana Russell, March 12";  
       birthdays[1] = "Landon Chan, May 18";  
       birthdays[7] = "Rosie Mills, January 3";  
   }  
}  

1chỉ ô thứ ba của mảng đó. Bởi vì một mảng hai chiều bao gồm một số mảng, để lặp qua nó và hiển thị tất cả các giá trị của nó (hoặc điền vào tất cả các phần tử của nó), chúng ta cần một vòng lặp lồng nhau:

  
String [] birthdays = new String[10];  
String birthdays [] = new String[10];  

2

Trong vòng lặp bên ngoài (biến

  
String [] birthdays = new String[10];  
String birthdays [] = new String[10];  

9), chúng tôi lặp lại tất cả các mảng trong mảng hai chiều của chúng tôi. Trong vòng lặp bên trong (biến

  
public class Main {
   public static void main(String[] args) {
       String birthdays [] = new String[10];  
       birthdays[0] = "Jana Russell, March 12";  
       birthdays[1] = "Landon Chan, May 18";  
       birthdays[7] = "Rosie Mills, January 3";  
   }  
}  

3), chúng ta chuyển qua tất cả các phần tử của mỗi mảng. Kết quả là, cats[0][0] (mảng đầu tiên, phần tử đầu tiên) sẽ được hiển thị đầu tiên, tiếp theo là cats[0][1] (mảng đầu tiên, phần tử thứ hai). Sau khi xem qua mảng đầu tiên, chúng ta sẽ hiển thị cats[1][0] , cats[1][1] , cats[1][2] , v.v. Nhân tiện, mảng hai chiều cũng hỗ trợ khởi tạo tốc ký:

  
String [] birthdays = new String[10];  
String birthdays [] = new String[10];  

3

Thông thường, chúng ta sẽ khai báo mảng hai chiều

  
public class Main {
   public static void main(String[] args) {
       String birthdays [] = new String[10];  
       birthdays[0] = "Jana Russell, March 12";  
       birthdays[1] = "Landon Chan, May 18";  
       birthdays[7] = "Rosie Mills, January 3";  
   }  
}  

4là một

  
public class Main {
   public static void main(String[] args) {
       String birthdays [] = new String[10];  
       birthdays[0] = "Jana Russell, March 12";  
       birthdays[1] = "Landon Chan, May 18";  
       birthdays[7] = "Rosie Mills, January 3";  
   }  
}  

5, nhưng cách viết tắt này cho phép chúng ta chỉ định các giá trị ngay lập tức. Tại sao bạn cần một mảng hai chiều? Chà, bạn có thể sử dụng một cái để dễ dàng tạo lại trò chơi "Battleship" nổi tiếng:

Dđếm có bao nhiêu phần tử lẻ trong mảng java năm 2024
Trong "Battleship", cấu trúc của sân chơi có thể được mô tả dễ dàng: một mảng hai chiều gồm 10 mảng với 10 phần tử mỗi mảng. Bạn tạo hai trong số các mảng này (một cho bạn và một cho đối thủ của bạn)
  
String [] birthdays = new String[10];  
String birthdays [] = new String[10];  

4

sử dụng một số giá trị (ví dụ: số hoặc ký hiệu) để điền vào các phần tử tương ứng với vị trí tàu của bạn, sau đó thay phiên nhau gọi tọa độ cho các phần tử cụ thể:

  • tàu chiếnBoard1[0][2]!
  • Cô! tàu chiếnBoard2[2][4]!
  • Đánh!
  • tàu chiếnBoard2[2][5]!
  • Đánh!
  • battleshipBoard2[2][6]!,
  • chìm!

Điều này kết thúc phần giới thiệu đầu tiên của chúng ta về mảng, nhưng đó mới chỉ là khởi đầu tương tác của chúng ta với chúng. Trong các bài học sau, chúng ta sẽ thấy những cách thú vị mà chúng có thể được sử dụng, đồng thời tìm hiểu những chức năng tích hợp sẵn của Java để cho phép chúng ta làm việc với cấu trúc dữ liệu này thuận tiện hơn :)