Xin chào tất cả các bạn đã quay lại loạt bài hướng dẫn lập trình Java. Các bạn đã học tập thế nào? Java đã làm các bạn thấy thú vị chứ?
Mình nghĩ rằng đã đến lúc chúng ta đi đến việc quan trọng nhất, áp dụng lý thuyết đó vào thực hành để giải những bài tập Java.
Ban đầu có thể các bạn sẽ thấy những bài tập này nó khá là … đơn giản.
Nhưng thực sự mà nói thì nó rất là quan trọng trong việc học lập trình.
Khi làm thật nhiều những bài tập nhỏ, cơ bản thế này, bạn sẽ được tiếp cận vấn đề một cách cơ sở nhất, từ đó hiểu rõ bản chất vấn đề.
Luyện tập những bài tập đơn giản đến độ thuần thục cho phép bạn có khả năng đọc từng phần nhỏ của chương trình lớn và ghép nối chúng lại dễ dàng để hiểu được bức tranh lớn.
Nên nhớ là:
"CHƯƠNG TRÌNH LỚN CŨNG ĐƯỢC TẠO THÀNH TỪ CHƯƠNG TRÌNH NHỎ MÀ THÔI"
Vậy nên đừng thấy nó nhỏ mà bỏ qua nhé, chúng ta sẽ góp gió thành bão, tích tiểu thành đại.
Trước tiên, hãy tự thử sức mình với 20 bài tập Java cơ bản sau đây (đừng vội xem đáp án bên dưới nhé).
20 bài tập Java cơ bản
Sau đó, khi làm xong hãy thử tham khảo thêm cách làm (đáp án) của mình.
Lưu ý, nếu thực sự không thể tự mình làm được thì mới xem ấp án nhé.
> Nếu bạn tham gia KHÓA HỌC JAVA tại NIIT - ICT Hà Nội thì bạn sẽ được thử sức với số lượng bài tập được thiết kế tỉ mỉ theo lộ trình bài bản. Hoàn thành hết là tương đương năng lực của Junior Dev.
Còn bây giờ, bắt đầu thử làm bài tập Java thôi nào.
Đề bài: 20 bài tập Java cơ bản
Phần 1: 5 Bài tập Java cơ bản với câu điều kiện
Bài tập 1:
-
Viết chương trình Java mà khi chạy, màn hình console sẽ cho phép ta nhập vào một số nguyên, in ra màn hình “Đây là số nguyên dương”
-
Nếu số vừa nhập vào là một số lớn hơn hoặc bằng 0, ngược lại in ra “Đây là số nguyên âm”.
Bài tập 2:
-
Viết chương trình cho phép nhập vào một số nguyên dạng số, sau khi chạy thì chương trình sẽ ghi số đó ra dưới dạng chữ.
-
VD: 1 -> Một, 2 -> Hai, …
Bài tập 3:
-
Viết chương trình cho phép nhập vào 3 số thực
-
Chương trình này sẽ kiểm tra 3 số này có phải là 3 cạnh của một tam giác hay không.
Bài tập 4:
-
Viết chương trình cho phép nhập vào 3 số
-
Chương trình sẽ kiểm tra 3 số này có phải là 3 cạnh của một tam giác vuông hay không.
Bài tập 5*:
-
Viết chương trình cho phép người dùng nhập vào mã số sinh viên
-
Sau đó kiểm tra xem mã số này có đúng với định dạng đã cho hay không.
-
Định dạng mã số sinh viên là “Bxxxxxxx” với x là số nguyên từ 1-9. (Sử dụng biểu thức chính quy để ràng buộc định dạng)
> Nếu thấy những bài tập trên khó, đó là do kiến thức Java ăn bản của bạn chưa vững. Ôn tập thêm tại Hướng dẫn tự học Java.
> Và học thêm một ít về thuật toán bạn nhé.
Phần 2: 5 Bài tập Java cơ bản với vòng lặp
Bài tập 6:
-
Viết chương trình cho phép nhập vào một số nguyên dương n, tính tổng tất cả số chẵn trong khoảng từ 0 - n.
Bài tập 7:
-
Viết chương trình để nhập nhập một số nguyên, tìm kết quả phép nhân của số đó với các số từ 1 - 20 , sau đó in kết quả ra màn hình.
Bài tập 8:
-
Viết chương trình cho phép nhập vào một số nguyên n ( n < 1000 )
-
In ra tất cả số nguyên tố trong khoảng từ 0 - n.
Bài tập 9:
-
Viết chương trình cho phép nhập vào số nguyên n( n <= 20 ), in ra số Fibonacci ứng với nó.
-
Số Fibonacci là số mà nó bằng tổng của 2 số Fibonacci trước nó.
-
Với giả thuyết là Fi(0) = 1, Fi(1) = 1.
-
Ta có ví dụ: Fi(2) = Fi(0) + Fi(1) = 1+1 = 2, Fi(3) =Fi(2) + Fi(1) = 2+1 = 3, Fi(4) = Fi(3) + Fi(2) = 3+2 = 5, … Giả sử n = 4, đầu ra sẽ là 5.
Bài tập 10*:
-
Viết chương trình cho phép người dùng nhập vào 5 mã số sinh viên.
-
Kiểm tra xem mã số sinh viên này có đúng với định dạng hay chưa.
-
Với định dạng mã số sinh viên là “B170xxxx” với x là số nguyên từ 1-9. (Sử dụng biểu thức chính quy để ràng buộc định dạng)
> Phần này sẽ làm việc nhiều với vòng lặp nên nếu bạn chưa thực sự quen thì nên luyện tập thêm tại bài Vòng lặp trong Java.
Phần 3: 5 Bài tập Java cơ bản với Mảng
Bài tập 11:
-
Viết chương trình cho phép nhập vào n, sau đó nhập vào n phần tử số nguyên.
-
Cuối cùng, chương trình sẽ xuất ra giá trị trung bình của mảng này.
Bài tập 12:
-
Viết chương trình cho phép nhập vào n, sau đó nhập vào n phần tử số nguyên dương.
-
Cuối cùng, chương trình sẽ xuất ra phần tử có giá trị lớn nhất.
Bài tập 13:
-
Viết chương trình cho phép nhập vào n, sau đó nhập vào n phần tử số nguyên (có thể dương hoặc âm).
-
Cuối cùng, chương trình sẽ xuất ra phần tử có giá trị nhỏ nhất.
Bài tập 14:
-
Viết chương trình cho phép nhập vào n, sau đó nhập vào n phần tử số nguyên.
-
Sắp xếp các phần tử trong mảng theo thứ tự ngược lại.
Bài tập 15(*):
-
Viết chương trình cho phép người dùng nhập vào 5 mã số, lưu 5 mã số này vào một mảng.
-
Chương trình sẽ kiểm tra xem trong 5 mã số này có mã số nào sai định dạng hay không (định dạng là “00yLxxxx” với y là số nguyên từ 2 - 5, x là số nguyên từ 0-9).
-
Nếu có bất kỳ mã số nào sai định dạng thì chương trình in ra “Sai rồi” rồi kết thúc chương trình, ngược lại thì in ra “Đúng rồi”. (Sử dụng biểu thức chính quy để ràng buộc định dạng)
Phần 4: 5 Bài tập Java cơ bản với chuỗi
Bài tập 16:
-
Viết chương trình cho phép người dùng nhập vào một chuỗi, sau đó nhập vào một ký tự.
-
Kiểm tra xem ký tự đó có xuất hiện trong chuỗi hay không? Nếu có in ra “Có”, ngược lại in ra “Không”.
Bài tập 17:
-
Viết chương trình cho phép người dùng nhập vào một chuỗi, sau đó nhập vào một ký tự.
-
Kiểm tra xem ký tự nhập vào đó nằm ở vị trí thứ mấy trong chuỗi(nếu có, số đếm bắt đầu từ 0).
-
Nếu nó có xuất hiện trong chuỗi thì in ra vị trí của nó trong chuỗi, nếu không thì in ra “Không tồn tại trong chuỗi”.
Bài tập 18:
-
Viết chương trình cho phép nhập vào một chuỗi, kiểm tra xem chuỗi này có xuất hiện số hay không.
-
Nếu có tin ra “Có”, ngược lại, in ra “Không”.
Bài tập 19:
-
Viết chương trình cho phép nhập vào một chuỗi
-
Kiểm tra xem chuỗi này ký tự “a” xuất hiện bao nhiêu lần
Bài tập 20*:
-
Viết chương trình cho phép người dùng nhập vào 1 chuỗi, kiểm tra chuỗi này có phù hợp với yêu cầu hay không.
-
Nếu có thì in ra “Duyệt!”, ngược lại in ra “Không duyệt”.
-
Yêu cầu về chuỗi là: Có độ dài không quá 20 ký tự, không được chứa ký tự khoảng trắng, bắt đầu bằng một ký tự chữ viết hoa (A - Z), kết thúc bằng một số (0 - 9). (Sử dụng biểu thức chính quy để ràng buộc định dạng)
Đáp án: 20 bài tập Java cơ bản
Đáp án: 5 Bài tập Java cơ bản với câu điều kiện
Đáp án bài tập 1:
import java.util.Scanner;
public class BaiTapJavaCoBan1 {
public static void main(String[] args)
{
int n;
System.out.println("Nhap vao mot so nguyen:");
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
if (n >= 0){
System.out.println("Đây là một số nguyên dương");
}
else {
System.out.println("Đây là số nguyên âm");
}
}
}
Đáp án bài tập 2:
import java.util.Scanner;
public class BaiTapJavaCoBan2 {
public static void main(String[] args)
{
int n;
System.out.println("Nhap vao mot so nguyen:");
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
switch (n)
{
case 0: System.out.println("Không"); break;
case 1: System.out.println("Một"); break;
case 2: System.out.println("Hai"); break;
case 3: System.out.println("Ba"); break;
case 4: System.out.println("Bốn"); break;
case 5: System.out.println("Năm"); break;
case 6: System.out.println("Sáu"); break;
case 7: System.out.println("Bảy"); break;
case 8: System.out.println("Tám"); break;
case 9: System.out.println("Chín"); break;
default:
System.out.println("Chỉ có 0 - 9 thôi :D");
break;
}
}
}
Đáp án bài tập 3:
import java.util.Scanner;
public class BaiTapJavaCoBan3 {
public static void main(String[] args)
{
float a, b, c;
System.out.println("Nhập vào 3 số:");
Scanner sc = new Scanner(System.in);
a = sc.nextFloat();
b = sc.nextFloat();
c = sc.nextFloat();
if(a+b>c && b+c>a && c+a>b)
System.out.println("Ba số đúng là 3 cạnh của 1 tam giác");
else
System.out.println("Ba số không phải là 3 cạnh của 1 tam giác");
}
}
Đáp án bài tập 4:
import java.util.Scanner;
public class BaiTapJavaCoBan4 {
public static void main(String[] args)
{
float a, b, c;
System.out.println("Nhập vào 3 số:");
Scanner sc = new Scanner(System.in);
a = sc.nextFloat();
b = sc.nextFloat();
c = sc.nextFloat();
if(a*a+b*b==c*c || b*b+c*c==a*a || c*c+a*a==b*b)
System.out.println("Ba số đúng là 3 cạnh của 1 tam giác vuông");
else
System.out.println("Ba số không phải là cạnh của 1 tam giác vuông");
}
}
Đáp án bài tập 5:
import java.util.Scanner;
public class BaiTapJavaCoBan5 {
public static void main(String[] args)
{
String MSSV;
System.out.println("Nhập vào MSSV:");
Scanner sc = new Scanner(System.in);
MSSV = sc.nextLine(); // Nhận vào 1 chuỗi từ bàn phím
if (MSSV.matches("B\\d{7}")) //Kiểm tra bằng biểu thức chính quy
System.out.println("Phù hợp");
else
System.out.println("Không phù hợp");
// Bài này nâng cao là vì có sử dụng biểu thức chính quy
// các bạn có thể tra Google để biết thêm về nó
}
}
Đáp án: 5 Bài tập Java cơ bản với vòng lặp
Đáp án bài tập 6:
import java.util.Scanner;
public class BaiTapJavaCoBan6 {
public static void main(String[] args)
{
int n;
int sum = 0;
System.out.println("Nhập vào số nguyên:");
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
for (int i = 0; i <= n; i++) // duyệt tất cả phần tử từ 0-n
if (i % 2 == 0) // nếu nó là số chẵn
sum += i; // Cộng vào tổng.
System.out.println(sum);
}
}
Đáp án bài tập 7:
import java.util.Scanner;
public class BaiTapJavaCoBan7 {
public static void main(String[] args)
{
int n;
int sum = 0;
System.out.println("Nhập vào số nguyên:");
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
for (int i = 1; i <= 20; i++) // duyệt tất cả phần tử từ 1-20
{
System.out.println(n + " x " + i + " = " + n*i);
}
}
}
Đáp án bài tập 8:
import java.util.Scanner;
public class BaiTapJavaCoBan8 {
public static void main(String[] args)
{
int n;
boolean soNguyenTo = false;
System.out.println("Nhập vào số nguyên:");
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
// 1, 2 là 2 số nguyên tố mặc nhiên, không cần xét.
System.out.print("1 2 ");
for (int i = 3; i <= n; i++) // duyệt tất cả phần tử từ 1-20
{
/**
* Gán cho soNguyenTo đúng
* Nếu sau khi ra khỏi vòng lặp j
* mà nó vẫn còn là true thì số này là số nguyên tố
*/
soNguyenTo = true;
for (int j = 2; j < i; j++)
{
if (i % j == 0)
/**
* Gán cho soNguyenTo là false
* khi nó chia hết nó bất cứ số nào nhỏ hơn
* nó trong khoảng từ 3 - n
*/
soNguyenTo = false;
}
if (soNguyenTo == true)
System.out.print(i + " ");
}
}
}
Đáp án bài tập 9:
import java.util.Scanner;
public class Fibonacci
{
public int CalculateFi(int n)
{
if (n == 0 || n == 1){
return 1;
}
return CalculateFi(n-1) + CalculateFi(n-2);
}
}
public class HelloWorld
{
public static void main(String[] args)
{
int n;
int Fi;
System.out.println("Nhập vào số nguyên:");
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
Fibonacci fibonacci = new Fibonacci();
Fi = fibonacci.CalculateFi(n);
System.out.println("Fi(" + n + ") = " + Fi);
}
}
Đáp án bài tập 10:
import java.util.Scanner;
public class BaiTapJavaCoBan10
{
public static void main(String[] args)
{
String[] MSSV = new String[5];
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 5; i++)
{
System.out.println("Nhập vào MSSV thứ " + (i+1) + ":");
MSSV[i] = sc.nextLine();
}
for (int i = 0; i < 5; i++)
{
if (!MSSV[i].matches("B170[1-9]{4}"))
System.out.println("MSSV thứ " + (i+1) + " sai định dạng!");
}
}
}
Đáp án: 5 Bài tập Java cơ bản với Mảng
Đáp án bài tập 11:
import java.util.Scanner;
public class BaiTapJavaCoBan11
{
public static void main(String[] args)
{
int n;
int[] soNguyen;
float ketQua = 0;
Scanner sc = new Scanner(System.in);
System.out.println("Nhập vào n:");
n = sc.nextInt();
soNguyen = new int[n];
for (int i = 0; i < n; i++)
{
System.out.println("Nhập vào số nguyên:");
soNguyen[i] = sc.nextInt();
}
for (int i = 0; i < n; i++)
ketQua += soNguyen[i];
ketQua = ketQua/n;
System.out.println("Trung bình cộng của các số nguyên là: " + ketQua);
}
}
Đáp án bài tập 12:
import java.util.Scanner;
public class BaiTapJavaCoBan12
{
public static void main(String[] args)
{
int n;
int[] soNguyen;
int max = 0;
Scanner sc = new Scanner(System.in);
System.out.println("Nhập vào n:");
n = sc.nextInt();
soNguyen = new int[n];
for (int i = 0; i < n; i++)
{
System.out.println("Nhập vào số nguyên:");
soNguyen[i] = sc.nextInt();
}
for (int i = 0; i < n; i++)
{
if(soNguyen[i] > max)
max = soNguyen[i];
}
System.out.println("Phần tử có giá trị lớn nhất là: " + max);
}
}
Đáp án bài tập 13:
import java.util.Scanner;
public class BaiTapJavaCoBan13
{
public static void main(String[] args)
{
int n;
int[] soNguyen;
int min = 0;
Scanner sc = new Scanner(System.in);
System.out.println("Nhập vào n:");
n = sc.nextInt();
soNguyen = new int[n];
for (int i = 0; i < n; i++)
{
System.out.println("Nhập vào số nguyên:");
soNguyen[i] = sc.nextInt();
}
min = soNguyen[0];
for (int i = 0; i < n; i++)
{
if(soNguyen[i] < min)
min = soNguyen[i];
}
System.out.println("Phần tử có giá trị nhỏ nhất là: " + min);
}
}
Đáp án bài tập 14:
import java.util.Scanner;
public class BaiTapJavaCoBan14
{
public static void main(String[] args)
{
//Khai báo các biến cần thiết
int n;
int[] soNguyen;
Scanner sc = new Scanner(System.in);
//Nhập dữ liệu
System.out.println("Nhập vào n:");
n = sc.nextInt();
soNguyen = new int[n];
for (int i = 0; i < n; i++)
{
System.out.println("Nhập vào số nguyên:");
soNguyen[i] = sc.nextInt();
}
//In ra mảng ban đầu
System.out.println("Mảng trước khi đảo ngược: ");
for (int i = 0; i < n; i++)
System.out.print(soNguyen[i] + " ");
//Đảo ngược mảng
for (int i = 0; i < n/2; i++)
{
int empty;
empty = soNguyen[i];
soNguyen[i] = soNguyen[n-i-1];
soNguyen[n-i-1] = empty;
}
//In ra mảng sau khi đảo ngược
System.out.println("\nMảng sau khi đảo ngược: ");
for (int i = 0; i < n; i++)
System.out.print(soNguyen[i] + " ");
}
}
Đáp án bài tập 15:
import java.util.Scanner;
public class BaiTapJavaCoBan15
{
public static void main(String[] args)
{
String[] code = new String[5];
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 5; i++)
{
System.out.println("Nhập vào mã thứ " + (i+1));
code[i] = sc.nextLine();
if(!code[i].matches("00[2-5]L\\d{4}"))
{
System.out.println("Sai rồi!");
return;
}
}
System.out.println("Đúng rồi!");
}
}
Đáp án: 5 Bài tập Java cơ bản với chuỗi
Đáp án bài tập 16:
import java.util.Scanner;
public class BaiTapJavaCoBan16
{
public static void main(String[] args)
{
String chuoi;
char kiTu;
boolean tonTai = false;
Scanner sc = new Scanner(System.in);
System.out.println("Nhập vào một chuỗi: ");
chuoi = sc.nextLine();
System.out.println("Nhập vào ký tự muốn kiểm tra:");
kiTu = sc.nextLine().charAt(0);
char mangKiTu[] = chuoi.toCharArray();
for (int i = 0; i < mangKiTu.length; i++)
{
if (kiTu == mangKiTu[i])
{
System.out.println("Có");
tonTai = true;
}
}
if(tonTai == false)
System.out.println("Không");
}
}
Đáp án bài tập 17:
import java.util.Scanner;
public class BaiTapJavaCoBan17
{
public static void main(String[] args)
{
String chuoi;
char kiTu;
boolean tonTai = false;
Scanner sc = new Scanner(System.in);
System.out.println("Nhập vào một chuỗi: ");
chuoi = sc.nextLine();
System.out.println("Nhập vào ký tự muốn kiểm tra:");
kiTu = sc.nextLine().charAt(0);
char mangKiTu[] = chuoi.toCharArray();
for (int i = 0; i < mangKiTu.length; i++)
{
if (kiTu == mangKiTu[i])
{
System.out.println((i+1));
tonTai = true;
}
}
if(tonTai == false)
System.out.println("Không tồn tại trong chuỗi");
}
}
Đáp án bài tập 18:
import java.util.Scanner;
public class BaiTapJavaCoBan18
{
public static void main(String[] args)
{
String chuoi;
Scanner sc = new Scanner(System.in);
System.out.println("Nhập vào một chuỗi: ");
chuoi = sc.nextLine();
if (chuoi.matches(".*\\d.*"))
System.out.println("Có");
else
System.out.println("Không");
}
}
Đáp án bài tập 19:
import java.util.Scanner;
public class BaiTapJavaCoBan19
{
public static void main(String[] args)
{
String chuoi;
int soLan = 0;
Scanner sc = new Scanner(System.in);
System.out.println("Nhập vào một chuỗi: ");
chuoi = sc.nextLine();
char mangKiTu[] = chuoi.toCharArray();
for (int i = 0; i < mangKiTu.length; i++)
{
if ('a' == mangKiTu[i])
{
soLan++;
}
}
System.out.println(soLan);
}
}
Đáp án bài tập 20:
import java.util.Scanner;
public class BaiTapJavaCoBan20
{
public static void main(String[] args)
{
String chuoi;
Scanner sc = new Scanner(System.in);
System.out.println("Nhập vào một chuỗi: ");
chuoi = sc.nextLine();
if(chuoi.matches("^[A-Z][^\\s]{0,18}\\d$"))
System.out.println("Duyệt");
else
System.out.println("Không duyệt");
}
}
Tổng kết
Như vậy là chúng ta vừa cùng nhau hoàn thành 20 bài tập Java.
Trong đó mình đã có giới thiệu đến các bạn một khái niệm rất hay trong Java đó là biểu thức chính quy, thường thì biểu thức chính quy được áp dụng nhiều trong việc ràng buộc dữ liệu nhập vào của người dùng (định dạng của email, số điện thoại,...) và được sử dụng rất nhiều trong lập trình.
Cùng với một số bài tập Java cơ bản cho các bạn hiểu rõ hơn về rẽ nhánh, mảng, vòng lặp, chuỗi.
Hãy nhớ luyện tập thật nhiều đều đặn, phản xạ xử lý chương trình ngay trong suy nghĩ để có thể chinh phục ngôn ngữ Java tốt hơn bạn nhé.
>>> 10 Project Java miễn phí dành cho người mới học
---
HỌC VIỆN ĐÀO TẠO CNTT NIIT - ICT HÀ NỘI
Học Lập trình chất lượng cao (Since 2002). Học thực tế + Tuyển dụng ngay!
Đc: Tầng 3, 25T2, N05, Nguyễn Thị Thập, Cầu Giấy, Hà Nội
SĐT: 02435574074 - 0383.180086
Email: hello@niithanoi.edu.vn
Fanpage: https://facebook.com/NIIT.ICT/
#niit #icthanoi #niithanoi niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp #java #php #python