Mình đã Code ở đây
package Main;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
public class main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//Khai báo sô phần tử
int n;
//Nhạp vào số lượng phần tử từ 100 đến 300
do {
System.out.println("Nhap vao so luong phan tu: ");
n = sc.nextInt();
} while (n < 100 || n > 300);
//Khai báo mảng 1 chiều gồm n phần tử
int[] a = new int[n];
//Tạo mảng với các số ngẫu nhiên. Nên nhập n càng lớn thì càng có nhiều số trùng lặp
System.out.println("Mang tao ngau nhien");
for (int i = 0; i < n; i++) {
a[i] = new Random().nextInt() % 100;
}
System.out.println("Da tao xong mang ngau nhien");
//Hien th mang ngau nhien
System.out.println("Mang ngau nhien");
for (int i = 0; i < n; i++) {
System.out.format("%5d", a[i]);
if ((i + 1) % 10 == 0) {
System.out.format("%n");
}
}
System.out.format("%nSo phan tu cua mang la: %5d%n", n);
//Xoa cac phan tu trung nhau trong mang ngau nhien
ArrayList<Integer> arr = new ArrayList<>();
for (int i = 0; i < n; i++) {
if (!arr.contains(a[i])) {
arr.add(a[i]);
}
}
n = 0;
for (int i = 0; i < arr.size(); i++) {
a[n++] = arr.get(i);
}
System.out.println("Mang sau khi xoa cac phan tu trung nhau");
for (int i = 0; i < n; i++) {
System.out.format("%5d", a[i]);
if ((i + 1) % 10 == 0) {
System.out.format("%n");
}
}
System.out.format("%nSo phan tu cua mang la: %5d%n", n);
}
}
Và mình cũng biết là Code Xóa các phần tử trùng nhau trong mảng 1 chiều là thế này
int i = 0;
while (i < n)
{
int j = i + 1;
while (j < n)
if (a[i] == a[j])
{
for (int k = j; k < n; k++)
a[k] = a[k + 1];
n--;
}
else j++;
i++;
}
Nhưng mà mình không thể nào xóa được các phần tử trùng nhau trong mảng 1 chiều bằng Code đó mà phải chuyển qua ArrayList. (Lỗi vòng lặp nếu dùng hàm còn viết trực tiếp trong main thì lỗi vì quá số lượng mảng tức là sau khi n-- thì nó không thay đổi n nên lỗi vòng lặp chổ k<n ạ) Các Pro cho em hỏi cách xử lý em nó mà ko cần thông qua ArrayList.