2.8.3. Copy mảng
Có thể copy một biến mảng vào một biến mảng khác, tuy nhiên cả hai biến đó phải cùng tham chiếu tới cùng một mảng.
int[] luckyNumbers = smallPrimes;
luckyNumbers[5] = 12; // smallPrimes[5] cũng nhận giá trị 12
2.8.4. Các tham số dòng lệnh
Trong hàm main của java có tham số string[ ] args, tham số này chỉ ra hàm main nhận gía trị đầu vào là một mảng các xâu ký tự, các tham số này được truyền qua dòng lệnh.
Ví dụ 2.16:
public class Message
{
Có thể bạn quan tâm!
- Cấu Trúc Lập Trình Cơ Bản Trong Java
- Câu Lệnh Và Các Cấu Trúc Lệnh Trong Java
- Công nghệ Java - 5
- Đối Tượng, Lớp, Kế Thừa, Giao Diện
- Công nghệ Java - 8
- Công nghệ Java - 9
Xem toàn bộ 232 trang tài liệu này.
public static void main(String[] args)
{
if (args[0].equals("-h")) System.out.print("Hello,"); else if (args[0].equals("-g")) System.out.print("Goodbye,");
// print the other command-line arguments for (int i = 1; i < args.length; i++) System.out.print(" " + args[i]);
System.out.println("!");
}
}
Biên dịch chương trình và chạy java Message -g cruel world Mảng args có nội dung sau args[0]: "-g"
args[1]: "cruel"
args[2]: "world"
Chương trình cho kết quả
Goodbye, cruel world!
2.8.5. Sắp xếp mảng
Để sắp xếp một mảng số ta dùng phương thức sort trong class Array.
int[ ] a= new int [10000]; Array.sort(a);// sẽ sắp xếp mảng a.
2.8.6. Mảng nhiều chiều
Cú pháp khai báo mảng hai chiều:
[Kiểu_dữ_liệu] Tên_mảng[][]; Hoặc [Kiểu_dữ_liệu][][] Tên_mảng;
Cấp phát bộ nhớ cho mảng
Trong Java có 2 cách cấp phát bộ nhớ như sau:
Cách 1:
[Kiểu_dữ_liệu] Tên_mảng[][] = new [Kiểu_dữ_liệu] [Số_dòng][Số_cột];
Ví dụ 2.18: Khai báo và cấp phát bộ nhớ cho mảng number có 2 dòng, 3 cột: int number[][] = new int[2][3];
Cách 2:
[Kiểu_dữ_liệu][][] Tên_mảng = new [Kiểu_dữ_liệu] [Số_dòng][Số_cột]; Truy xuất các phần tử trong mảng hai chiều
Mỗi phần tử của mảng 2 chiều được truy xuất thông qua tên mảng cùng với chỉ số dòng và chỉ số cột của phần tử đó. Tương tự mảng một chiều, nếu một mảng hai chiều có m dòng và n cột thì chỉ số của dòng sẽ chạy từ 0, 1, 2,..., m - 1 và chỉ số của cột sẽ chạy từ 0, 1, 2,..., n - 1.
Cú pháp: Tên_mảng[Chỉ_số_dòng][Chỉ_số_cột];
Ví dụ 2.19: Nhập xuất mảng hai chiều
public static void main(String[] args)
{
// khai báo số dòng và số cột cho mảng int soDong, soCot;
Scanner scanner = new Scanner(System.in); System.out.println("Nhập vào số dòng của mảng:"); soDong = scanner.nextInt(); System.out.println("Nhập vào số cột của mảng:"); soCot = scanner.nextInt();
// khai báo và cấp phát bộ nhớ cho mảng
int[][] A = new int[soDong][soCot]; for (int i = 0; i < soDong; i++) { for (int j = 0; j < soCot; j++) {
System.out.print("Nhập phần tử thứ [" + i + ", " + j + "]: "); A[i][j] = scanner.nextInt();
}
}
System.out.println("Mảng vừa nhập: "); for (int i = 0; i < soDong; i++) {
for (int j = 0; j < soCot; j++) { System.out.print(A[i][j] + "t");
}
System.out.println("n");
}}
Kết quả:
CÂU HỎI ÔN TẬP
Câu 1. Những từ sau có phải là định danh hay không? a/ aZ4, b/ ân2, c/_class, d/ My$100
Câu 2. Dãy //*...//...*/ có phải là chú thích hay không ? tại sao ?
Những lệnh nào trong số các lệnh sau là hợp lệ a. Char a =’u0061’;
b. Char ‘u0061’=’a’;
c. Long phone=8235469L;
d. Fload pi=3.14159;
e. Double p=314.159e-2;
Câu 3: Những khai báo nào của hàm main () sau đây là đúng ?
a) static void main(String arg[]){/*...*/}
b) public static int main(String arg[]){/*...*/}
c) public stactic void main (String arg[]){/*...*/}
d) public stactic void main (String [] arg){/*...*/}
e) final static public void main (String [] arg){/*...*/}
Câu 4.Tìm câu trả lời đúng?
a) if-else đơn (1 if và 1 else) thì có ít nhất một khối lệnh (của if hoặc của else) được thực hiện. Đúng hay sai?
b) Trong cấu trúc lệnh switch-case, khi không dùng “default” thì có ít nhất một khối lệnh được thực hiện. Đúng hay sai?
c) Trong cấu trúc lệnh switch-case, khi dùng “default” thì có ít nhất một khối lệnh được thực hiện. Đúng hay sai?
d) Trong cấu trúc lệnh while, khối lệnh được thực hiện ít nhất một lần ngay cả khi điều kiện có giá trị False. Đúng hay sai?
e) Trong cấu trúc lệnh do-while, khối lệnh được thực hiện ít nhất một lần ngay cả khi điều kiện có giá trị False. Đúng hay sai?
f) Trong cấu trúc lệnh for, khối lệnh được thực hiện ít nhất một lần ngay cả khi điều kiện có giá trị False. Đúng hay sai?
Câu 5. Chương trình sau có lỗi hay không, nếu có lỗi thì sửa cho đúng.
//NhietDo.Java
PUBLIC CLASS nhietDo{
Public VOID main(String arg){ double fahre=62.5;
double celsius=f2c(fahre); System.uot.println(fahre +’F=’+celsius+’c’);
}
Double f2c(float f) { Return (f-32)*5/9;
}
}
Câu 6. Cho biết đoạn chương trình sau thực hiện vòng lặp bao nhiêu lần và kết quả in ra là gì?
class me{
public static void main(String args[]){ int i = 0; int sum = 0; do{
sum += i; i++;
} while(i <= 10); System.out.println(sum);
}
}
Câu 7. Cho biết đoạn chương trình sau thực hiện vòng lặp bao nhiêu lần và kết quả in ra là gì?
class me{
public static void main(String args[ ]){ int i = 5; int sum = 0;
do {
sum += i; i++;
} while(i < 5);
}
Câu 8. Cho biết kết quả thực hiện chương trình sau : public class MyClas{
public static coid main (String [] arg){ String a,b,c;
c=new String(“chuột”); b=new String(“Mèo”); b=a;
a=”Chó”; c=b;
System.uot.println(c);
}
}
Câu 9. Điều gì sẽ xảy ra khi chạy và dịch chương trình sau : public class Prog1{
public static void main (String [] arg ) { int k=1;
int i=++k + k++ + +k; System.uot.println(i);
}
Câu 10. Điều gì sẽ xảy ra khi dịch và chạy chương trình sau: public class Prog2{
public static void main(String [] arg){ int k=0;
int[] a={3,6};
a[k]=k=9; //lưu ý mức ưu tiên của [] cao hơn phép gán= System.out.println(i+” ” +a [0]+ “ ” + a[1]);
}
}
Câu 11. Cho biết kết quả thực hiện chương trình sau : public class Prog3{
public static void main (String [] arg){ int k =0 , i=0;
boolean r,t=true; r=(t & 0< (i +=1)) ;
r = (t && 0 < (i+=2));
r= (t | 0 < (k+=1));
r = (t || 0 < (k+=2)); System.uot.println(i+” ” + k);
}
}
Câu 12. Kết quả dich và chạy chương trình sau là gì ? public class Prog4{
public static void main (String [] arg){ int a=0,b=0;
int [] bArr new int [1]; bArr[0] = b; inC1(a) ; inC2(bArr);
System.out.println(“a= ” + a + “b =” + b +”bArr = “+ bArr[0]”);
}
public static void inC1(int x){x++;}; public static void inC2(int [] x) {x[0]++;};
}
CÂU HỎI THẢO LUẬN
Bài 1. Viết chương trình tìm ước số chung lớn nhất, bội số chung nhỏ nhất của hai số tự nhiên a và b.
Bài 2. Viết chương trình chuyển đổi một số tự nhiên ở hệ cơ số 10 thành số ở hệ cơ số b bất kì (1< b≤ 36).
Bài 3. Hãy viết chương trình tính tổng các chữ số của một số nguyên bất kỳ. Ví dụ: Số 8545604 có tổng các chữ số là: 8+5+4+5+6+0+4= 32.
Bài 4. Viết chương trình phân tích một số nguyên thành các thừa số nguyên tố Ví dụ: Số 28 được phân tích thành 2 x 2 x 7
Bài 5. Viết chương trình liệt kê tất cả các số nguyên tố nhỏ hơn n cho trước.
Bài 6. Viết chương trình liệt kê n số nguyên tố đầu tiên.
Bài 7. Dãy số Fibonacci được định nghĩa như sau: F0 =1, F1 = 1; Fn = Fn-1 + Fn-2 với n>=2. Hãy viết chương trình tìm số Fibonacci thứ n.
Bài 8. Nhập số n và dãy các số thực a0 , a1 ,..., an-1. Không đổi chỗ các phần tử và không dùng thêm mảng số thực nào khác (có thể dùng mảng số nguyên nếu cần) hãy cho hiện trên màn hình dãy trên theo thứ tự tăng dần.
Bài 9. Viết chương trình nhập vào vào ma trận A có n dòng, m cột, các phần tử là những số nguyên lớn hơn 0 và nhỏ hơn 100 được nhập vào từ bàn phím. Thực hiện các chức năng sau:
a)Tìm phần tử lớn nhất của ma trận cùng chỉ số của số đó.
b)Tìm và in ra các phần tử là số nguyên tố của ma trận (các phần tử không nguyên tố thì thay bằng số 0).
c)Sắp xếp tất cả các cột của ma trận theo thứ tự tăng dần và in kết quả ra màn
hình.
Bài 10.
Viết chương trình java cho phép tạo và thực thi theo menu sau:
1. Nhập vào một số nguyên dương n.
2. Tính tổng các số từ 1 đến n
3. Kiểm tra n có là số nguyên tố
4. Kiểm tra n có là số hoàn hảo.
5. In ra các số nguyên tố từ 1 đến n
6. In ra các số hoàn hảo từ 1 đến n.
7. Hiển thị số n thành tích các thừa số nguyên tố.
8. Thoát
Bài 11. Viết chương trình nhập vào vào mảng A có n phần tử, các phần tử là những số nguyên lớn hơn 0 và nhỏ hơn 100 được nhập vào từ bàn phím. Thực hiện các chức năng sau:
a) Tìm phần tử lớn nhất và lớn thứ 2 trong mảng cùng chỉ số của các số đó.
b) Sắp xếp mảng theo thứ tự giảm dần .
c) Nhập một số nguyên x và chèn x vào mảng A sao cho vẫn đảm bảo tính sắp xếp giảm dần và số phần tử của mảng vẫn không đổi.
Bài 12. Nhập một dãy n số nguyên, tìm khoảng cách ngắn nhất giữa hai số liền kề nhau. Ví dụ: input 4 8 6 1 2 9 4, out put: Khoảng cách ngắn nhất là 1, giữa hai số 1 và 2.
Bài 13.Viết chương trình thực hiện các yêu cầu sau:
a) Tạo một mảng một chiều với số phần tử được nhập vào từ bàn phím;
b) Nhập giá trị của các phân tử của mảng là các số nguyên từ bàn phím;
c) Hiển thị mảng vừa nhập;
d) Cho biết tổng số phần tử có giá trị là số chẵn. Ví dụ:
e) Mảng được nhập vào là: 1 4 6 7 // số phần tử chẵn = 2
f) Mảng được nhập vào là: 1 3 5 7 // số phần tử chẵn = 0.
g) Đưa ra phần tử trong mảng có giá trị là x (ví dụ như x = 3);
h) Đưa ra: giá trị lớn nhất, nhỏ nhất có trong mảng.
Bài 14. Viết chương trình thực hiện chuẩn hoá một xâu ký tự nhập từ bàn phím (loại bỏ các dấu cách thừa, chuyển ký tự đầu mỗi từ thành chữ hoa, các ký tự khác thành chữ thường)
Gợi ý: Hãy sử dụng phương thức của StringTokenizer
Bài 15. Viết chương trình nhập một xâu và in ra xâu đảo ngược.