Lập trình cơ bản với Java Tác giả: PGS.TS Trần Văn Lăng, Ths. Chu Nguyên Hoàng Minh Giúp các bạn tiếp cần gần hơn với bộ môn lập trình để trở thành một Lập trình viên suất sắc Lập trình cơ bản với Java Tác giả: PGS.TS Trần Văn Lăng, Ths. Chu Nguyên Hoàng Minh Giúp các bạn tiếp cần gần hơn với bộ môn lập trình để trở thành một Lập trình viên suất sắc
Trang 1Sau khi học xong bài này sinh viên sẽ nắm được
Các thành phần cơ bản của ngôn ngữ JAVA
Kiểu dữ liệu, biến, hằng
Bảng phân chia thời lượng
Trọng tâm bài giảng
Các thành phần cơ bản của ngôn ngữ JAVA
Kiểu dữ liệu, biến, hằng
Biểu thức và toán tử
Trang 22.1 Các thành phần cơ bản trong ngôn ngữ Java([1] trang 19, [2] trang 21)
2.1.1 Bộ ký tự dùng trong Java (Character Set)
gôn ngữ ava được d ng tr n b t g m chữ c i ho chữ c i thường z, 10 chữ số 0 9, c c hiệu to n học + - * / % = () , dấu nối _, c c hiệu đặc biệt h c ; {} [ ] ? \ & | # $
Ngôn ngữ Java sử dụng b ký t chuẩn quốc tế Unicode Khác với ký t CII d i
b t, t Unicode dài 16 bit Nó không chỉ bao g m những ký t trong b ký t ASCII
mà còn có vài triệu ký t h c tương ứng với hầu hết các bảng chữ cái trên thế giới
2.1.2 Từ khóa (Keyword)
Là những từ định nghĩ trước trong , có nghĩ c định, phải dùng đúng cú
h , đều viết bằng chữ thường, không dùng vào việc khác ha đặt tên mới trùng từ khoá
Từ khoá g m có từ khóa h i b o, điều khiển, kiểu dữ liệu, toán tử
Từ khóa khai báo public, private, static, abstract, extends, const,
im ort, c ge, cl ss, interf ce, im lement, new…
Từ khóa điều khiển switch, case, break, if, return, for, while, continue, tr , c tch, throws…
Từ khóa toán tử inst nceof…
Từ khóa kiểu dữ liệu boolean, char, short, long, double, int, byte, flo t, null, oid…
2.1.3 Tên (Identifier)
Là m t dãy ký t chỉ tên gói, giao diện, lớp, biến, hàm, hằng, có phân biệt chữ hoa, thường Tên bắt đầu bằng ký t hoặc dấu $ _, nhưng hông thể bắt đầu bằng m t số, không có dấu cách trong tên, và còn có thể dùng b ký t Unicode để đặt tên Ngoài ra
Trang 322
khi đặt tên, nên tránh m t số ký hiệu như % @ *… ốn được dùng trong Java với nghĩ riêng
hi đặt tên nên theo quy tắc đặt c c t n định nghĩ sẵn của Java cho dễ nhớ như s u
Tên gói viết chữ thường
Tên lớp, giao diện bắt đầu bằng chữ hoa
Tên biến, hàm bắt đầu bằng chữ thường
Tên hằng viết chữ hoa
2.1.4 Lời chú thích
h m o chương trình ới mục đ ch giải th ch, giú cho người lập trình dễ dàng bổ sung, sửa chữa, nâng cấ chương trình hi chạ chương trình, trình dịch sẽ bỏ qua chú thích Các lời chú thích có thể được thêm vào trong mã ngu n Java giống như trong C++, có thể đặt tại bất kỳ vị trí nào
Bắt đầu lời chú thích với dấu /* và kết thúc bởi */,cho hé đặt nhiều dòng chú thích trong cặp dấu trên
Đặt dấu // và ghi lời chú th ch s u đó tr n cùng m t dòng
Tạo chú thích trong tập tin tài liệu html
Sử dụng tiện ích javadoc tạo tập tin html cùng tên với tập tin ngu n j , để tổng kết, giới thiệu các thành phần trong chương trình ếu muốn bổ sung các chú thích vào tập tin html này, bạn ghi vào tậ tin j như s u
í dụ /* * Chú thích này có ý nghĩ cho tiện ích javadoc, sẽ là m t phần
của tài liệu được t đ ng phát sinh bởi tiện ích javadoc
*/
Cách tạo tập tin vidu.html từ tập tin vidu.java
javadoc vidu.java
Chú ý lớp ViDu trong ViDu.java phải khai báo public hay protected
2.2 Kiểu dữ liệu cơ sở, biến, hằng ([1] trang 23, [2] trang 21)
2.2.1 Kiểu dữ liệu cơ sở
Ngôn ngữ lập trình java có 8 kiểu dữ liệu cơ sở byte, short, int, long, float, double, boolean và char
Trang 423
¸9223372036854775807
2.2.1.1 Kiểu số nguyên
Java cung cấp 4 kiểu số nguyên khác nhau là byte, short, int, long Kích t hước, giá trị nhỏ nhất, lớn nhất, cũng như giá trị mặc định của các kiểu dữ liệu số nguyên được mô
tả chi tiết trong bảng trên
Kiểu mặc định của các số nguyên là kiểu int
Các số nguyên kiểu byte và short rất ít khi được dùng
Trong java không có kiểu số nguyên không dấu như trong ngôn ngữ C/C++
Khai báo và khởi tạo giá trị cho các biến kiểu nguyên
int x = 0;
Trang 524
long y = 100;
Một số lưu ý đối với các phép toán trên số nguyên
Nếu hai toán hạng kiểu long thì kết quả là kiểu long
M t trong hai toán hạng không phải kiểu long sẽ được chuyển thành kiểu long trước khi th c hiện phép toán
Nếu hai toán hạng đầu không phải kiểu long thì phép tính sẽ th c hiện với kiểu int Các toán hạng kiểu byte hay short sẽ được chuyển sang kiểu int trước khi th c hiện phép toán
Trong java không thể chuyển biến kiểu int và kiểu boolean như trong ngôn ngữ C/C++
Ví dụ: có đoạn chương trình như sau
Kiểu float có kích thước 4 byte và giá trị mặc định là 0.0f
Kiểu double có kích thước 8 byte và giá trị mặc định là 0.0d
Số kiểu dấu chấm đ ng không có giá trị nhỏ nhất cũng không có giá trị lớn nhất Chúng có thể nhận các giá trị
Số âm
Số dương
Vô c c âm
Vô c c dương
Trang 625
Khai báo và khởi tạo giá trị cho các biến kiểu dấu chấm đ ng
float x = 100.0/7;
double y = 1.56E6;
M t số lưu ý đối với các phép toán trên số dấu chấm đ ng
Nếu m i toán hạng đều có kiểu dấu chấm đ ng thì phép toán chuyển thành phép toán dấu chấm đ ng
Nếu có m t toán hạng là double thì các toán hạng còn lại sẽ được chuyển thành kiểu double trước khi th c hiện phép toán
Biến kiểu float và double có thể ép chuyển sang kiểu dữ liệu khác trừ kiểu boolean
2.2.1.3 Kiểu ký tự (char)
Kiểu ký t trong ngôn ngữ lập trình java có kích thước là 2 bytes và chỉ dùng để biểu diễn các ký t trong b mã Unicode Như vậy kiểu char trong java có thể biểu diễn tất cả 216 = 65536 ký t khác nhau
Giá trị mặc định cho m t biến kiểu char là null
2.2.1.4 Kiểu luận lý (boolean)
Kiểu boolean chỉ nhận 1 trong 2 giá trị true hoặc false
Trong java kiểu boolean không thể chuyển thành kiểu nguyên và ngược lại
Giá trị mặc định của kiểu boolean là false
2.2.2 Biến (Variable)
Biếnn làà v ngg n ớ dùnớ g đểể lưuu trữữ c c c giáá trịị củaa chương trình M ii biếnn gắnn lềnn vớii
m tt kiểuu dữữ lệuu vàà m tt định danh d y nhấty t gọii làà tênn biến
Tên biến hông thường làà m tt chu ii các ký t (Unicode),, kýý số
Tênn biếnn p ảii bắtt đầuu bằng m tt chữữ c i, m tt dấuu gạchh dướii hayy dấuu dolar
Tênn biếnn k ôn đượcc trùng vớii c c từc ừ k óaa
Tênn biếnn kh ngg cóó khoảngg trắng ở giữaở a tên
Trong java,, biếnn cóó thểể đượcc k aii báoo ở bấtở t kỳỳ nơii đâu rongg chươngg trìn
Cách h khai i báo
<kiểu dữ_lệu>> <tên_ iến>;
Trang 726
<kiểu dữ_lệu>> <tên_ iến>> == <giá_trị>;
Gán n giá á trị ị cho o biến
<tên biến>> == <giá_trị>;
Biến công cộng (toàn cục) là biến có thể truy xuất ở khắp nơi trong chương trình,
thường được khai báo dùng từ khóa public, hoặc đặt chúng trong m t class
Biến cục bộ là biến chỉ có thể truy xuất trong khối lệnh nó khai báo
Lưu ý: Trong ngôn ngữ lập trình java có phân biệt chữ in hoa và in thường Vì
vậy chúng ta cần lưu ý khi đặt tên cho các đối tương dữ liệu cũng như các xử lý trong chương trình
System.out.println("x = " + x); System.out.println("y = " + y);
System.out.println("z = x + y =" + z); System.out.println("So nho hon la so." + Math.min(x, y));
Trang 827
ụ: final int max = 10;
Bình thường hằng ngu n được ghi dưới dạng thậ h n (cơ số 10), muốn diễn đạt hằng nguyên ở dạng b t h n (cơ số 8), ghi 0 đầu ti n ương t , muốn diễn đạt hằng nguyên ở dạng thập lục h n (cơ số 16), ghi 0 đầu tiên
ụ: 017 0x1fe
Java xem hằng nguyên thu c kiểu int, trừ khi trị ngu n ượt quá phạm vi kiểu int,
hi đó hằng nguyên thu c kiểu long Muốn có hằng nguyên nhỏ thu c kiểu long, bạn thêm l hay L vào cuối trị số Hằng nguyên có thể được gán cho biến thu c kiểu byte hay short miễn là trị ngu n được g n hông ượt quá phạm vi của các kiểu này
ụ: 25L
Hằng số th c được Java mặc nhiên hiểu là trị thu c kiểu double, bạn có thể ghi thêm
D hay F (d hay f) ở cuối trị số để khẳng định rõ trị số thu c kiểu double hay float Hằng
Trang 928
\udddd t ứng ới mã Unicode dddd Hằng chu i diễn đạt m t chu i ký t kiểu tring, được ghi trong cặp dấu nháy kép
ụ: “Em còn nhớ hay em đã quên\n”
2.3 Biểu thức và toán tử ([1] trang 89, [2] trang 37)
2.3.1 Biểu thức (Expression)
Biểu thức l m t công thức t nh to n m t gi trị theo qu tắc to n học, cấu tạo từ c c
to n hạng (O er nd) hằng, h m, biến nối ết ới nh u bởi c c to n tử (O er tor) C c
to n hạng trong mọi biểu thức hải tương th ch ới nh u ề iểu t biểu thức có thể l biểu thức số học, logic, t , chu i hi ết quả củ biểu thức có iểu tương ứng
: Biểu thức đơn giản nhất l biến h hằng
22 a "Hello"
2.3.2 Toán tử (Operator)
o n tử l hiệu đặc biệt dùng để ết hợ c c to n hạng, dùng trong c c biểu thức
2.3.2.1 Các toán tử số học (Arithmetic Operator)
Phé to n số học sử dụng tr n c c to n hạng có iểu số trả ề ết quả iểu số
+ C ng h i to n hạng op1 + op2
op1, op2 là các toán hạng kiểu số
Với hé chi o 1 / o , nếu o 1, o đều là số nguyên thì phép chia này cho kết quả là số nguyên, nếu m t trong hai số op1, op2 hay cả hai số đều là số th c sẽ cho kết quả số th c
ụ 2:
class ArithmeticDemo {
Trang 102.3.2.2 Các toán tử tăng, giảm (Increment, Decrement Operator)
Phé to n tăng giảm sử dụng cho các biến iểu số nguyên và kiểu ký t
op ++ hay ++ op tăng biến số nguyên lên m t đơn ị, hay cho ký
ụ 2: char c = ‘a’;
c++; //Kết quả là c=‘b’
2.3.2.3 Toán tử quan hệ hay so sánh (Comparison Operator)
Phé to n so s nh luôn cho ết quả có iểu logic
Trang 1130
ụ: 155 > 25 4.5 <8 ‘B’ < ‘A’
2.3.2.4 Toán tử logic (Boolean Operator)
Phé to n logic chỉ dụng cho c c to n hạng iểu logic, cho ết quả iểu logic
& hay && Và (And) op1&& op2
Trang 1231
ương t với phép | và phép ||, ở phép || chỉ cần m t toán hạng bên trái trả về true, toán hạng bên phải sẽ được bỏ qu hông t nh đến
2.3.2.5 Các toán tử làm việc với bit
L c c to n tử l m iệc tr n từng bit củ số ngu n
<< Dịch tr i n bit op << n
>> Dịch hải n bit op >> n
>>> Dịch hải n bit
điền 0 o những ch ừ dịch
Trang 1332
4 << 2 = 4 * 2 2 = 16
Phép dịch phải không dấu đi n bitsẽ điền 0 vào các bít bên trái cho cả số dương
âm
2 biểu diễn nhị phân là 00000000 00000000 00000000 00000010
-2 biểu diễn nhị phân là 11111111 11111111 11111111 11111110
-2 >>>24 = 255 00000000 00000000 00000000 11111111
2.3.2.6 Toán tử gán (Assignment Operator)
Toán tử g n = dùng để g n gi trị của m t biểu thức Exp cho m t biến Var Phép toán gán trả về giá trị là giá trị của biểu thức Exp
Var=Exp;
V ụ: x = 10;
Có thể dùng to n tử g n nhiều lần li n tiế trong c u lệnh
: x = y = z = 0; //Cả ba biến x y đều được gán giá trị 0 char c = ‘a’;
c = (char) (c+4); //c+4 là mã unicode của ký tự ‘e’ cho kết quả là ‘e’
Java còn cung cấp các toán tử rút gọn ( horth nd ssignment O er tor) như s u
%= Chi lấ hần dư r i g n r = r % E p var %= Exp
&= nd từng bit r i g n r = r E var &= Exp
^= or từng bit r i g n r = E var ^= Exp
<<= Dịch tr i r i g n var <<= Exp var <<= Exp
>>= Dịch hải r i g n var >>= Exp var >>= Exp
Trang 14? op1 ? op2 op3
Phé to n điều iện nếu to n hạng logic o 1 có trị true thì trả ề gi trị
() op(params) Định nghĩ hoặc gọi m t h m có tên
l o ới c c th m đối l params
(type) (type) op Chu ển đổi iểu dữ liệu củ to n hạng
o s ng iểu t e
Instanceo
f op1 instanceof op2
Phé to n c i đặt trả ề true nếu đối tượng o 1 l m t c i đặt củ lớ o
hé nối c c chu i, nếu có to n hạng
n o hông hải chu i, t đ ng
chu ển s ng chu i
ụ 1 int x, a = 2, b = 5; x = a>b ? a b;
System.out.println(a>b ? ”So a lon hon” ”So b lon hon”);
ụ 2 “Họ và tên của học viên " + soTT + " là “ hoTen
“ 2 2 = “ (2 + 2)
Trang 1534
2.3.3 Độ ưu tiên các phép toán
Đ ưu ti n củ c c hé to n trong biểu thức th c hiện theo thứ t từ tr n uống như trong bảng s u, tr n cùng m t dòng cùng mức ưu ti n thì th c hiện từ tr i qu hải, bạn có thể chủ đ ng qu định thứ t th c hiện hé to n trong biểu thức bằng những cặ ngoặc tròn ( ), trong ngoặc sẽ th c hiện trước, ngoặc trong th c hiện trước, ngoặc ngo i th c hiện s u
( ), [], ,op++, op
Dấu để tru uất biến, h m củ đối
tượng, lớ , tru uất hần tử củ
Trang 1635
2.4 Lệnh (Statement)([1] trang 25, [2] trang 51)
Lệnh có thể là lệnh đơn, hối lệnh hay cấu trúc điều khiển
{ // khối 1
{ // khối 2
lệnh 2.1 lệnh 2.2
… } // kết thúc khối lệnh 2 lệnh 1.1 lệnh 1.2
… } // kết thúc khối lệnh 1
{ // bắt đầu khối lệnh 3
// Các lệnh thu c khối lệnh 3 // …
} // kết thúc thối lệnh 3
2.5 Cấu trúc điều khiển ([1] trang 25, [2] trang 51)
2.5.1 Cấu trúc if…else
Trang 17 Boolean-Expression là biểu thức điều iện có iểu logic
t tement1, t tement có thể l lệnh đơn, hối lệnh, h cấu trúc điều hiển
Trang 18public static void main(String[] args) throws IOException {
BufferedReader kbd = new BufferedReader(new InputStreamReader
Trang 1938
else s="co mot nghiem la "+(-c/b);
else { double delta=b*b-4*a*c;
if (delta<0) s="vo nghiem";
else if (delta==0) s="co nghiem kep la "+(-b/(2*a));
else s= "co 2 nghiem x1= "+ ((-b+Math.sqrt(delta))/(2*a))+
" va x2= "+((-b-Math.sqrt(delta))/(2*a));
} System.out.println("Phuong trinh "+s);
}
}
2.5.2 Cấu trúc Switch
switch là câu lệnh l a chọn, cho phép rẻ nhánh th c hiện lệnh theo nhiều hướng
h c nh u căn cứ trên giá trị của m t biểu thức
Expression Biểu thức điều kiện có kiểu byte, short, int, char
t tement1,… t tementn+1 có thể là nhiều lệnh đơn, h cấu trúc điều hiển
Expression1, … Expressionn các biểu thức hằng (toán hạng là các giá trị hay hằng)
Trang 2039
Th c hiện lệnh 1, lệnh 2, …lệnh n khi biểu thức có giá trị bằng biểu thức 1,
biểu thức , …biểu thức n tương ứng, nếu biểu thức không bằng các giá trị đó thì lệnh n+1 theo s u def ult được th c hiện (nếu có default) Câu lệnh bre l m cho chương trình có thể tho t hỏi lệnh switch, nếu không có break, Java sẽ tiếp tục thi hành tuần t các câu lệnh trong switch
ếu hông có bre , hướng th c hiện là
Ví dụ: Nhậ th ng, năm in r số ng trong th ng, biết rằng tháng 1, 3, 5, 7, 8,
10, 12 số ng trong tháng là 31, tháng 4, 6, 9, 11 số ng trong th ng l 30, th ng năm nhuận số ng l 9, năm hông nhuận số ng l ăm nhuận l năm chi hết cho 00, h năm chi hết cho hông chi hết cho 100
class NumberDay {
public static void main(String[] args) {
int month = 7, year = 2004, numDays = 0;
switch (month) { case 1
case 3
case 5
case 7
Trang 21case 11.numDays = 30; break;
case 2 if (year % 4= =0 && year % 100 != 0 || year % 400= =0)
numDays = 29 else numDays = 28;
if (numDays >0) System.out.println("So ngay trong thang la " + numDays);
else System.out.println(“Thang khong hop le”);
Statement có thể là lệnh đơn, hối lệnh, hay cấu trúc điều hiển
Initialization-Expressions hần hởi tạo thường l c c biểu thức khởi tạo giá trị cho c c biến điều hiển òng lặ , c ch nh u dấu hẩ
Boolean-Expression l biểu thức điều iện có iểu logic, thường l biểu thức so sánh giá trị củ biến điều hiển ới giá trị kết thúc vòng lặp
Increment-Expressions phần tăng thường l c c biểu thức tăng giảm giá trị biến điều hiển òng lặ , c ch nh u dấu hẩ
Khi lệnh lặp For bắt đầu, phần khởi tạo được th c hiện trước, và th c hiện
duy nhất m t lần, s u đó biểu thức điều kiện được kiểm tra, nếu biểu thức đúng thì lệnh sẽ được th c hiện, tiếp theo th c hiện phần tăng của vòng lặp và quá trình kiểm tr biểu thức
Trang 22public static void main(String[] args) {
System.out.println("Trau dung Trau nam Trau gia");
Trang 23 Statement có thể l lệnh đơn, hối lệnh, h cấu trúc điều hiển
Boolean-Expression l biểu thức điều iện có iểu logic
iểm tr chừng n o biểu thức điều iện còn thoả mãn thì còn th c hiện
lệnh
ụ ìm ước số chung lớn nhất củ số ,
Ph n t ch nếu = thì U CL củ l , nếu thì U CL củ , cũng
là USCLN của x-y và y
Do đó t th số lớn trong h i số , bằng hiệu số củ chúng cho đến hi h i số bằng nh u, thì đó l ước số chung lớn nhất củ h i số ,
Trang 24 Statement có thể là lệnh đơn, hối lệnh, h cấu trúc điều hiển
Boolean-Expression l biểu thức điều iện có iểu logic
Đầu ti n sẽ th c hiện lệnh, s u đó iểm tra biểu thức điều iện, nếu biểu
thức đúng, thì òng lặ tiế tục, nếu biểu thức sai thì thoát vòng lặp
ụ 1 Lặ chương trình nhiều lần
while (true) {
…
InputStreamReader kbd = new InputStreamReader(System.in);
System.out.println(“Ban co muon tiep tuc khong”);
char c = (char) kbd.read();
if (c!=’Y’ && c!=’y’) break;
InputStreamReader kbd = new InputStreamReader(System.in);
System.out.println(“Ban co muon tiep tuc khong”);
Trang 2544
char c = (char) kbd.read();
}
while (c=’y’ || c==’Y’);
ụ 2: Cho biết số ngu n dương n có hải là số ngu n tố hông
Ph n t ch n l số ngu n tố hi n chi hông chẵn cho bất ỳ số n o từ đến căn bậc hai củ n, ì ậ lần lượt ét n có chi hết cho c c số từ đến căn bậc hai của n, cho đến khi xét hết h tìm được m t số m n chi hết
if (i > k) System.out.println(n+" la so nguyen to");
else System.out.println(n+" khong la so nguyen to");
} }
2.5.3.4 Các lệnh điều khiển khác
Lệnh break
Cú pháp break;
Ý nghĩa Lệnh bre dùng để tho t tức thời ra khỏi vòng lặ while, do… while, for
hay lệnh rẻ nhánh switch chứa nó và th c hiện lệnh tiếp theo
Lệnh break Label; dừng vòng lặp tức thời và quay về nhãn L bel n nhãn đặt theo
qu ước đặt tên củ , ghi trong chương trình có dạng
Label
Statement;
Trang 26Lệnh continue Label bỏ qua các lệnh sau continue và quay về nhãn Label
2.6 Ngoại lệ và câu lệnh bắt ngoại lệ ([2] trang 329)
goại lệ trong l c c đối tượng có iểu lớ định nghĩ sẵn, biểu diễn trạng th i
l i t đ ng h t sinh trong trường hợ n o đó hi m t h m được th c hiện C c h m trong được định nghĩ sẵn trong trường hợ n o thì có iểu ngoại lệ n o đó sẽ h t sinh hi m t ngoại lệ nả sinh, có thể l chọn h i hả năng ử l bắt l i h cho qu Lệnh ử l ngoại lệ th c hiện thông qu năm từ ho try, catch, finally, throw và throws
Trang 2746
catch đi èm ới tr , để bắt ngoại lệ Những câu lệnh trong chương trình m bạn
muốn bắt ngoại lệ được đư o giữ hối tr , nếu m t ngoại lệ xả r trong hối tr , thân của mệnh đề c tch có iểu ngoại lệ tương ứng sẽ được th c hiện Có thể có nhiều mệnh đề c tch bắt c c iểu ngoại lệ khác nhau
finally thân của mệnh đề fin ll luôn luôn th c hiện trước khi lệnh tr ết thúc,
cho dù có hay không có ngoại lệ, mệnh đề fin ll có thể có h hông
2.6.3 Lệnh throw
Cú pháp throw Exception-Instance;
Exception-Instance l m t đối tượng củ iểu ngoại lệ
Có h i c ch tạo m t đối tượng iểu ngoại lệ dùng m t th m đối trong mệnh đề
c tch h tạo m t đối tượng mới bằng to n tử new
Ví ụ: throw new NumberFormatException();
.C u lệnh throw được đư o hối tr , cho hé bạn điều hiển điều iện
h t sinh ngoại lệ hi gặ lệnh throw, c c c u lệnh s u throw sẽ được bỏ qu , lệnh tr chứ lệnh throw, sẽ tìm hối lệnh củ mệnh đề c tch có iểu ngoại lệ tương ứng để th c hiện
ụ: iết chương trình nhậ o họ t n, năm sinh ới điều iện họ t n hông
qu 5 t , năm sinh từ 19 0 đến 19 5
import java.io.*;
class Nhap {
Trang 2847
Cho qua kiểu ngo i lệ IOException là lỗi nhập xuất phát sinh khi thực hiện hàm readLine() của lớp BufferedReader
public static void main (String[] args) throws IOException{
BufferedReader kbd = new BufferedReader(new InputStreamReader (System.in));
Điều kiện phát sinh lỗi định d ng số NumberFormatException
if (ns<1980 || ns>1985) throw new NumberFormatException(); System.out.println("Nam sinh la "+ns);
Trang 2948
}
Trang 3049
2.7 Mảng (Array) ([2] trang 253)
Mảng là m t cấu trúc lưu giữ c c th nh hần có cùng iểu, chiều d i mảng cố định
i th nh hần của mảng được tru uất bởi chỉ số của nó trong mảng
ếu bạn muốn lưu giữ c c th nh hần h c iểu nh u h ch thước mảng có thể
th đổi đ ng, dùng m t Vector thay cho mảng
2.7.1 Mảng 1 chiều
Khai báo m t biến th m chiếu đến mảng
Khai báo m t biến dùng để th m chiếu đến mảng các thành phần kiểu ArrayType, nhưng hông có mảng nào thật s t n tại
ArrayType[] ArrayName;
iểu dữ liệu th nh hần có thể l bất ỳ iểu cơ sở h th m chiếu
int[] m;// Khai báo một mảng số nguyên String[] s; //Khai báo một mảng các chuỗi
ụ: m = new int[10]; // t o một mảng số nguyên
Bạn có thể ết hợ h i b o biến mảng và tạo mảng như s u
ArrayType[] ArrayName= newArrayType[ArraySize];
Có thể iết như s u
ArrayTypeArrayName[]= newArrayType[ArraySize];
ụ: int[] m = new int[10];
int m[] = new int[10];
ArrayName[index]
index chỉ ị tr củ th nh hần trong mảng cần tru uất, có thể l gi trị, biến h
biểu thức, có gi trị từ 0 đến ArraySize-1
Trang 3150
Ví dụ: m[0] = 20;
L ớc m ng
ArrayName.length Khởi tạo giá trị u c a m ng
Mảng có thể khởi tạo khi khai báo không dùng toán tử new Mảng khởi tạo là danh sách c c biểu thức c ch nh u dấu hẩ , đặt trong ngoặc móc Chiều d i mảng l số thành phần giữa hai dấu {và }
ụ 1: boolean[] answers = {true, false, true, true, false};
int monthDays[] = {31,28,31,30,31,30,31,31,30,31,30,31};
ụ : class ThamDoi {
public static void main (String[] args) {
for (int i=0; i < args.length; i++)
Khi chạ chương trình
Javac thamdoi.java java ThamDoi Thu tham doi dong lenh
Cho kết quả Tham doi thu 0 Thu
java ThamDoi Thu “tham doi” “dong lenh”
Cho kết quả Tham doi thu 0 Thu
Trang 323) Có nhiều thuật giải sắ ế , t chỉ khảo sát thuật giải l a chọn đơn giản
Lần lượt duyệt từ vị tr đầu ti n đến ị tr cuối dã , so s nh ho n ị hần tử ở vị
tr đó ới lần lượt các hần tử còn lại củ dã (nếu chúng chư có thứ t đúng), s u m i lần du ệt, tại vị tr đ ng ét sẽ c định được hần tử thích hợp
double[] a = new double[10];
BufferedReader kbd=new BufferedReader(new InputStreamReader (System.in));
System.out.print(“So phan tu cua mang la.”);
Trang 3352
int max =0;
for (int i=1; i<n;i++)
if (a[max] <a[i]) max = i;
System.out.println(“Phan tu lon nhat dau tien cua day la phan tu thu.”
max ” co gia tri la “ a[max]);
//Tìm ph n tử đ u tiên của dãy số có giá trịx
System.out.print(“Nhap tri can tim ”);
s=kbd.readLine();
double x =Double.parseDouble(s);
int i=0;
while (i<n && a[i] != x) i++;
if (i<n) System.out.println(“Phan tu dau tien co gia tri “ x
” la phan tu thu “ i);
else System.out.println(“Gia tri “ x ” khong co trong mang”);
Sắp xếp dãy số theo thứ tự tăng d n
System.out.println(“ ay so thuc sau khi sap xep la ”);
for (i=0;i<n;i++)
System.out.print(a[i] ”\t”);
System.out.println();
}
Trang 3453
}
2.7.2 Mảng đa chiều ( rrays of rrays)
Mảng có thể chứ c c th nh hần l mảng Để khai báo m t biến mảng đ chiều cần
c định m i chiều của mảng bằng c ch sử dụng các cặ dấu ngoặc vuông
ụ Khai báo mảng chiều
int m[][]= new int[4][5];
int[][]m= new int[4][5];
m là m t mảng 4 dòng, 5 c t, có th nh hần l c c số ngu n
Các mảng con có thể có chiều d i h c nh u, hi đó bạn h i b o như s u
ụ: int m[][] = new int[2][];
m[0] = new int[3];
m[1] = new int[4];
Khởi tạo giá trị đầu cho mảng
ụ: String[][] nhom = {{"Hoa", "Thu", "Hue", "Cuc", "Lan"},
{"Xuan" "Ha" "Thu" " ong”}};
ụ: Tạo ma trận các phần tử số nguyên có giá trị bằng chỉ số hàng + chỉ số c t
của phần tử In ma trận
public class MaTran {
public static void main(String[] args) {
int[][] a = new int[4][5];
//Nhập ma trận for (int i = 0; i < a.length; i++) for (int j = 0;j<a[i].length; j++) a[i][j] = i + j;
Trang 3554
} }
System.out.println(“Nhập lỗi!”);
} System.out.println(“Ky tu vua nhap.” + ch);
Trang 36public static void main(String args[]){
int arrInt[] = new int[10];
public static void main(String args[]){
int nums[] = new int[10];
int min, max;
nums[0] = 99;
nums[1] = -10;
Trang 37min = max = nums[0];
for(int i=1; i < 10; i++){
if(nums[i] < min) min = nums[i];
if(nums[i] > max) max = nums[i];
} System.out.println("min and max " + min + " " + max);
min = max = nums[0];
for(int i=1; i < 10; i++){
if(nums[i] < min) min = nums[i];
if(nums[i] > max) max = nums[i];
} System.out.println("Min and max " + min + " " + max);
}
}