Rate this post

Các bài viết liên quan:

Bài tập java syntax có đáp án

  1. Ví dụ bài tập: In ra màn hình “Hello, World!”
public class HelloWorld { 
  public static void main(String[] args) { 
    System.out.println("Hello, World!"); 
  } 
}
  1. Ví dụ bài tập: Tính tổng của hai số nguyên

public class Sum { 
  public static void main(String[] args) { 
    int num1 = 5; 
    int num2 = 10; 
    int sum = num1 + num2; 
    System.out.println("Sum of " + num1 + " and " + num2 + " is " + sum); 
  } 
}
  1. Ví dụ bài tập: Tìm số lớn nhất trong một mảng số

public class MaxNumber {
  public static void main(String[] args) {
    int[] numbers = {20, 35, -15, 7, 55, 1, -22};
    int max = Integer.MIN_VALUE;
    for (int i = 0; i < numbers.length; i++) {
      if (numbers[i] > max) {
        max = numbers[i];
      }
    }
    System.out.println("Max number in array is: " + max);
  }
}
  1. Ví dụ bài tập: Kiểm tra xem một chuỗi có phải là palindrome không
public class Palindrome {
  public static void main(String[] args) {
    String str = "madam";
    String reversed = "";
    for (int i = str.length() - 1; i >= 0; i--) {
      reversed += str.charAt(i);
    }
    if (str.equalsIgnoreCase(reversed)) {
      System.out.println(str + " is a palindrome");
    } else {
      System.out.println(str + " is not a palindrome");
    }
  }
}
  1. Ví dụ bài tập: Sắp xếp một mảng số theo thứ tự tăng dần
public class SortArray {
  public static void main(String[] args) {
    int[] numbers = {20, 35, -15, 7, 55, 1, -22};
    for (int i = 0; i < numbers.length; i++) {
      for (int j = i + 1; j < numbers.length; j++) {
        if (numbers[i] > numbers[j]) {
          int temp = numbers[i];
          numbers[i] = numbers[j];
          numbers[j] = temp;
        }
     
  1. Ví dụ bài tập: Chuyển đổi một số thập phân sang nhị phân
public class DecimalToBinary {
  public static void main(String[] args) {
    int decimal = 10;
    String binary = "";
    while (decimal > 0) {
      binary = (decimal % 2) + binary;
      decimal = decimal / 2;
    }
    System.out.println("Binary representation of " + decimal + " is: " + binary);
  }
}
  1. Ví dụ bài tập: Tìm ước chung lớn nhất của hai số
public class GCD {
  public static void main(String[] args) {
    int num1 = 24;
    int num2 = 16;
    while (num1 != num2) {
      if (num1 > num2) {
        num1 = num1 - num2;
      } else {
        num2 = num2 - num1;
      }
    }
    System.out.println("GCD of " + num1 + " and " + num2 + " is: " + num1);
  }
}
  1. Ví dụ bài tập: Xóa một phần tử trong một LinkedList
import java.util.LinkedList;

public class RemoveElement {
  public static void main(String[] args) {
    LinkedList<Integer> list = new LinkedList<>();
    list.add(1);
    list.add(2);
    list.add(3);
    list.add(4);
    list.add(5);
    int element = 3;
    list.remove(new Integer(element));
    System.out.println("LinkedList after removing element: " + list);
  }
}
  1. Ví dụ bài tập: Tìm phần tử trong một mảng số bằng sử dụng Stream API
import java.util.Arrays;

public class FindElement {
  public static void main(String[] args) {
    int[] numbers = {20, 35, -15, 7, 55, 1, -22};
    int element = 55;
    boolean isFound = Arrays.stream(numbers).anyMatch(i -> i == element);
    if (isFound) {
      System.out.println(element + " is found in the array");
    } else {
      System.out.println(element + " is not found in the array");
    }
  }
}
  1. Ví dụ bài tập: Tạo một lớp Employee với các thuộc tính tên, tuổi, lương và viết phương thức toString() để in ra thông tin của nhân viên.
public class Employee {
  private String name;
  private int age;
  private double salary;
  
  public Employee(String name, int age, double salary) {
    this.name = name;
    this.age = age;
    this.salary = salary;
  }
  
  public String toString() {
    return "Name: " + this.name + ", Age: " + this.age + ", Salary: " + this.salary;
  }
  
  public static void main(String[] args) {
    Employee emp = new Employee("John Doe", 30, 70000);
    System.out.println(emp);
  }
}

10 + Bài tập Java về variables và datatypes

  1. Bài tập: Khai báo một biến kiểu byte và gán giá trị cho nó.
byte a = 100;
  1. Bài tập: Khai báo một biến kiểu short và gán giá trị cho nó.
short b = 200;
  1. Bài tập: Khai báo một biến kiểu long và gán giá trị cho nó.
long c = 1234567890L;
  1. Bài tập: Khai báo một biến kiểu boolean và gán giá trị cho nó.
boolean d = true;
  1. Bài tập: Khai báo một biến kiểu char và gán giá trị cho nó.
char e = 'A';
  1. Bài tập: Khai báo một biến kiểu String và gán giá trị cho nó.
String f = "Hello, World!";
  1. Bài tập: Tạo một mảng kiểu int và gán giá trị cho các phần tử trong mảng.
int[] g = {1, 2, 3, 4, 5};
  1. Bài tập: Tạo một lớp SinhVien có các thuộc tính tên, tuổi, điểm và viết phương thức toString() để in ra thông tin của sinh viên.
public class SinhVien {
    private String name;
    private int age;
    private double score;

    public SinhVien(String name, int age, double score) {
        this.name = name;
        this.age = age;
        this.score = score;
    }

    public String toString() {
        return "Name: " + this.name + ", Age: " + this.age + ", Score: " + this.score;
    }

    public static void main(String[] args) {
        SinhVien sv = new SinhVien("John Doe", 20, 9.5);
        System.out.println(sv);
    }
}

  1. Bài tập: Tạo một lớp ComplexNumber chứa các thuộc tính là phần thực và phần ảo, viết các phương thức tính tổng, hiệu, tích, thương của hai số phức.
public class ComplexNumber {
    private double real;
    private double imaginary;

    public ComplexNumber(double real, double imaginary) {
        this.real = real;
        this.imaginary = imaginary;
    }

    public ComplexNumber add(ComplexNumber cn) {
        return new ComplexNumber(this.real + cn.real, this.imaginary + cn.imaginary);
    }

    public ComplexNumber subtract(ComplexNumber cn) {
        return new ComplexNumber(this.real - cn.real, this.imaginary - cn.imaginary);
    }

    public ComplexNumber multiply(ComplexNumber cn) {
        return new ComplexNumber(this.real * cn.real - this.imaginary * cn.imaginary, this.real * cn.imaginary + this.imaginary * cn.real);
    }

    public ComplexNumber divide(ComplexNumber cn) {
        double divisor = cn.real * cn.real + cn.imaginary * cn.imaginary;
        return new ComplexNumber((this.real * cn.real + this.imaginary * cn.imaginary) / divisor, (this.imaginary * cn.real - this.real * cn.imaginary) / divisor);
    }

    public String toString() {
        return this.real + " + " + this.imaginary + "i";
    }

    public static void main(String[] args) {
        ComplexNumber c1 = new ComplexNumber(1, 2);
        ComplexNumber c2 = new ComplexNumber(3, 4);
        System.out.println("Sum: " + c1.add(c2));
        System.out.println("Difference: " + c1.subtract(c2));
        System.out.println("Product: " + c1.multiply(c2));
        System.out.println("Quotient: " + c1.divide(c2));
    }
}

10 + Bài tập Java về conditionals

  1. Viết chương trình nhập vào một số nguyên, in ra chuỗi “Số lẻ” nếu số đó là số lẻ và “Số chẵn” nếu số đó là số chẵn.
import java.util.Scanner;

public class OddEven {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Nhập vào một số nguyên: ");
        int num = sc.nextInt();
        if (num % 2 == 0) {
            System.out.println("Số chẵn");
        } else {
            System.out.println("Số lẻ");
        }
    }
}
  1. Viết chương trình nhập vào 3 số nguyên và in ra số lớn nhất trong 3 số đó.
import java.util.Scanner;

public class LargestNumber {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Nhập vào số nguyên thứ nhất: ");
        int num1 = sc.nextInt();
        System.out.print("Nhập vào số nguyên thứ hai: ");
        int num2 = sc.nextInt();
        System.out.print("Nhập vào số nguyên thứ ba: ");
        int num3 = sc.nextInt();
        int largest = num1;
        if (num2 > largest) {
            largest = num2;
        }
        if (num3 > largest) {
            largest = num3;
        }
        System.out.println("Số lớn nhất trong 3 số là: " + largest);
    }
}
  1. Viết chương trình nhập vào một số nguyên và in ra chuỗi “Số âm” nếu số đó là số âm và “Số dương” nếu số đó là số dương.

  1. Viết chương trình nhập vào một số nguyên và in ra chuỗi “Chia hết cho 3” nếu số đó chia hết cho 3 và “Không chia hết cho 3” nếu số đó không chia hết cho 3.
import java.util.Scanner;

public class DivisibleByThree {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Nhập vào một số nguyên: ");
        int num = sc.nextInt();
        if (num % 3 == 0) {
            System.out.println("Chia hết cho 3");
        } else {
            System.out.println("Không chia hết cho 3");
        }
    }
}
  1. Viết chương trình nhập vào một ký tự và in ra chuỗi “Ký tự in hoa” nếu ký tự đó là ký tự in hoa và “Ký tự in thường” nếu ký tự đó là ký tự in thường.
import java.util.Scanner;

public class UppercaseLowercase {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Nhập vào một ký tự: ");
        char ch = sc.next().charAt(0);
        if (Character.isUpperCase(ch)) {
            System.out.println("Ký tự in hoa");
        } else {
            System.out.println("Ký tự in thường");
        }
    }
}
  1. Viết chương trình nhập vào một số nguyên và in ra chuỗi “Số nguyên tố” nếu số đó là số nguyên tố và “Không phải số nguyên tố” nếu số đó không phải là số nguyên tố.

  1. Viết chương trình nhập vào một số nguyên và in ra chuỗi “Số chẵn” nếu số đó là số chẵn và “Số lẻ” nếu số đó là số lẻ.
import java.util.Scanner;

public class EvenOdd {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Nhập vào một số nguyên: ");
        int num = sc.nextInt();
        if (num % 2 == 0) {
            System.out.println("Số chẵn");
        } else {
            System.out.println("Số lẻ");
        }
    }
}
  1. Viết chương trình nhập vào một năm và in ra chuỗi “Năm nhuận” nếu năm đó là năm nhuận và “Không phải năm nhuận” nếu năm đó không phải là năm nhuận.
import java.util.Scanner;

public class LeapYear {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Nhập vào một năm: ");
        int year = sc.nextInt();
        if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
            System.out.println("Năm nhuận");
        } else {
            System.out.println("Không phải năm nhuận");
        }
    }
}
  1. Viết chương trình nhập vào hai số nguyên và in ra chuỗi “Số lớn hơn” nếu số thứ nhất lớn hơn số thứ hai và “Số nhỏ hơn” nếu số thứ nhất nhỏ hơn số thứ hai.

  1. Viết chương trình nhập vào một chuỗi và in ra chuỗi đảo ngược của chuỗi đó.
import java.util.Scanner;

public class ReverseString {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Nhập vào một chuỗi: ");
        String str = sc.nextLine();
        String reversed = new StringBuilder(str).reverse().toString();
        System.out.println("Chuỗi đảo ngược: " + reversed);
    }
}
  1. Viết chương trình tính tổng của một dãy số nguyên được nhập vào từ bàn phím. Chương trình sẽ dừng khi người dùng nhập vào số 0.
import java.util.Scanner;

public class SumOfNumbers {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int sum = 0;
        while (true) {
            System.out.print("Nhập vào số nguyên (0 để dừng): ");
            int num = sc.nextInt();
            if (num == 0) {
                break;
            }
            sum += num;
        }
        System.out.println("Tổng của dãy số: " + sum);
    }
}
  1. Viết chương trình tính giá trị bình phương của một số nguyên được nhập vào từ bàn phím.
import java.util.Scanner;

public class Square {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Nhập vào số nguyên: ");
        int num = sc.nextInt();
        int square = num * num;
        System.out.println("Bình phương của số " + num + " là " + square);
    }
}
  1. Viết chương trình tính diện tích hình chữ nhật dựa trên chiều dài và chiều rộng được nhập vào từ bàn phím.
import java.util.Scanner;

public class RectangleArea {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Nhập vào chiều dài hình chữ nhật: ");
        double length = sc.nextDouble();
        System.out.print("Nhập vào chiều rộng hình chữ nhật: ");
        double width = sc.nextDouble();
        double area = length * width;
        System.out.println("Diện tích hình chữ nhật là " + area);
    }
}
  1. Viết chương trình tính chu vi và diện tích hình tròn dựa trên bán kính được nhập vào từ bàn phím.
import java.util.Scanner;

public class Circle {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Nhập vào bán kính hình tròn: ");
        double radius = sc.nextDouble();
        double circumference = 2 * Math.PI * radius;
        double area = Math.PI * radius * radius;
        System.out.println("Chu vi hình tròn là " + circumference);
        System.out.println("Diện tích hình tròn là " + area);
    }
}

10+ bài tập java data structures

  1. Viết chương trình để tạo một mảng số nguyên và in ra tất cả các phần tử trong mảng.
public class ArrayExample {
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3, 4, 5};
        for (int i = 0; i < numbers.length; i++) {
            System.out.println(numbers[i]);
        }
    }
}
  1. Viết chương trình để tạo một danh sách String và in ra tất cả các phần tử trong danh sách.
import java.util.ArrayList;
import java.util.List;

public class ListExample {
    public static void main(String[] args) {
        List<String> names = new ArrayList<>();
        names.add("John");
        names.add("Mike");
        names.add("Bob");
        for (String name : names) {
            System.out.println(name);
        }
    }
}
  1. Viết chương trình để tạo một map với các cặp key-value và in ra tất cả các cặp key-value trong map.
import java.util.HashMap;
import java.util.Map;

public class MapExample {
    public static void main(String[] args) {
        Map<Integer, String> map = new HashMap<>();
        map.put(1, "John");
        map.put(2, "Mike");
        map.put(3, "Bob");
        for (Map.Entry<Integer, String> entry : map.entrySet()) {
            System.out.println(entry.getKey() + ": " + entry.getValue());
        }
    }
}
  1. Viết chương trình để tạo một set và in ra tất cả các phần tử trong set.
import java.util.HashSet;
import java.util.Set;

public class SetExample {
    public static void main(String[] args) {
        Set<String> set = new HashSet<>();
        set.add("John");
        set.add("Mike");
        set.add("Bob");
        for (String name : set) {
            System.out.println(name);
        }
    }
}
  1. Viết chương trình để tạo một queue và thực hiện các thao tác thêm, xóa và in ra các phần tử trong queue.
import java.util.LinkedList;
import java.util.Queue;

public class QueueExample {
    public static void main(String[] args) {
        Queue<Integer> queue = new LinkedList<>();
        // Thêm các phần tử vào queue
        queue.add(1);
        queue.add(2);
        queue.add(3);
        // In ra các phần tử trong queue
        while (!queue.isEmpty()) {
            System.out.println(queue.remove());
        }
    }
}
  1. Viết chương trình để tạo một stack và thực hiện các thao tác push, pop và in ra các phần tử trong stack.
import java.util.Stack;

public class StackExample {
    public static void main(String[] args) {
        Stack<Integer> stack = new Stack<>();
        // Thêm các phần tử vào stack
        stack.push(1);
        stack.push(2);
        stack.push(3);
        // In ra các phần tử trong stack
        while (!stack.empty()) {
            System.out.println(stack.pop());
        }
    }
}
  1. Viết chương trình để sắp xếp một mảng số nguyên sử dụng thuật toán sắp xếp chọn (Selection Sort).
public class SelectionSortExample {
    public static void main(String[] args) {
        int[] numbers = {5, 2, 9, 1, 3};
        for (int i = 0; i < numbers.length - 1; i++) {
            int minIndex = i;
            for (int j = i + 1; j < numbers.length; j++) {
                if (numbers[j] < numbers[minIndex]) {
                    minIndex = j;
                }
            }
            int temp = numbers[i];
            numbers[i] = numbers[minIndex];
            numbers[minIndex] = temp;
        }
        for (int i = 0; i < numbers.length; i++) {
            System.out.print(numbers[i] + " ");
        }
    }
}
  1. Viết chương trình để tìm kiếm một phần tử trong một mảng sử dụng thuật toán tìm kiếm tuyến tính (Linear Search).
public class LinearSearchExample {
    public static void main(String[] args) {
        int[] numbers = {5, 2, 9, 1, 3};
        int target = 9;
        int index = -1;
        for (int i = 0; i < numbers.length; i++) {
            if (numbers[i] == target) {
                index = i;
                break;
            }
        }
        if (index != -1) {
            System.out.println("Số " + target + " tìm thấy tại vị trí " + index);
        } else {
            System.out.println("Số " + target + " không tìm thấy trong mảng.");
        }
    }
}
  1. Viết chương trình để tìm kiếm một phần tử trong một mảng sử dụng thuật toán tìm kiếm nhị phân (Binary Search).
public class BinarySearchExample {
    public static int binarySearch(int[] numbers, int target) {
        int low = 0;
        int high = numbers.length - 1;
        while (low <= high) {
            int mid = (low + high) / 2;
            if (numbers[mid] == target) {
                return mid;
            } else if (numbers[mid] < target) {
                low = mid + 1;
            } else {
                high = mid - 1;
            }
        }
        return -1;
    }
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9};
        int target = 5;
        int index = binarySearch(numbers, target);
        if (index != -1) {
            System.out.println("Số " + target + " tìm thấy tại vị trí " + index);
        } else {
            System.out.println("Số " + target + " không tìm thấy trong mảng.");
        }
    }
}
  1. Viết chương trình để tìm số nguyên tố lớn nhất trong một đoạn số, sử dụng thuật toán Sieve of Eratosthenes.
public class SieveOfEratosthenesExample {
    public static void sieveOfEratosthenes(int n) {
  boolean[] isPrime = new boolean[n + 1];
  for (int i = 2; i <= n; i++) {
  	isPrime[i] = true;
  }
  for (int i = 2; i * i <= n; i++) {
  	if (isPrime[i]) {
  for (int j = i * i; j <= n; j += i) {
  	isPrime[j] = false;
  		}
 	}
  }
  int largestPrime = -1;
  for (int i = n; i >= 2; i--) {
  		if (isPrime[i]) {
  			largestPrime = i;
 			 break;
  		}
        }
        if (largestPrime != -1) {
           System.out.println("Số nguyên tố lớn nhất trong đoạn " + n + " là: " + largestPrime);
        } else {
          System.out.println("Không có số nguyên tố nào trong đoạn " + n);
        }
  }
  public static void main(String[] args) {
  	int n = 20;
  	sieveOfEratosthenes(n);
  }
}

10+ bài tập về loop trong java

  1. Viết chương trình in ra tất cả các số từ 1 đến 100 bằng vòng lặp for.
for (int i = 1; i <= 100; i++) {
    System.out.println(i);
}
  1. Viết chương trình in ra tất cả các số chẵn từ 0 đến 100 bằng vòng lặp for.
for (int i = 0; i <= 100; i += 2) {
    System.out.println(i);
}
  1. Viết chương trình in ra tất cả các số lẻ từ 1 đến 100 bằng vòng lặp for.
for (int i = 1; i <= 100; i += 2) {
    System.out.println(i);
}
  1. Viết chương trình tính tổng tất cả các số từ 1 đến 100 bằng vòng lặp for.
int sum = 0;
for (int i = 1; i <= 100; i++) {
    sum += i;
}
System.out.println("Tổng là: " + sum);
  1. Viết chương trình tìm số lớn nhất trong một mảng bằng vòng lặp for.
int[] arr = {1, 5, 3, 8, 9, 2};
int max = arr[0];
for (int i = 1; i < arr.length; i++) {
    if (arr[i] > max) {
        max = arr[i];
    }
}
System.out.println("Số lớn nhất là: " + max);
  1. Viết chương trình in ra một tam giác Pascal bằng vòng lặp for.
for (int i = 0; i < 10; i++) {
    for (int j = 0; j <= i; j++) {
        System.out.print(binomialCoeff(i, j) + " ");
    }
    System.out.println();
}
  1. Viết chương trình in ra một bảng cửu chương bằng vòng lặp for.
for (int i = 1; i <= 10; i++) {
    for (int j = 1; j <= 10; j++) {
        System.out.print(i * j + " ");
    }
    System.out.println();
}
  1. Viết chương trình in ra tất cả các số Fibonacci nhỏ hơn 100 bằng vòng lặp for.
int a = 0, b = 1, c;
System.out.print(a + " " + b);
for (int i = 2; i < 100; i++) {
    c = a + b;
    if (c >= 100) {
        break;
    }
    System.out.print(" " + c);
    a = b;
    b = c;
}
  1. Viết chương trình in ra tất cả các số nguyên tố nhỏ hơn 100 bằng vòng lặp for.
for (int i = 2; i < 100; i++) {
    boolean isPrime = true;
    for (int j = 2; j <= i / 2; j++) {
        if (i % j == 0) {
            isPrime = false;
            break;
        }
    }
    if (isPrime) {
        System.out.print(i + " ");
    }
}

10 bài tập OOP, interface, Object

  1. Viết một lớp SinhVien với các thuộc tính tên, tuổi, điểm trung bình và các phương thức get/set cho chúng.
class SinhVien {
    private String ten;
    private int tuoi;
    private double diemTrungBinh;

    public SinhVien(String ten, int tuoi, double diemTrungBinh) {
        this.ten = ten;
        this.tuoi = tuoi;
        this.diemTrungBinh = diemTrungBinh;
    }

    public String getTen() {
        return ten;
    }

    public void setTen(String ten) {
        this.ten = ten;
    }

    public int getTuoi() {
        return tuoi;
    }

    public void setTuoi(int tuoi) {
        this.tuoi = tuoi;
    }

    public double getDiemTrungBinh() {
        return diemTrungBinh;
    }

    public void setDiemTrungBinh(double diemTrungBinh) {
        this.diemTrungBinh = diemTrungBinh;
    }
}
  1. Viết một lớp NhanVien kế thừa từ lớp SinhVien với thêm thuộc tính lương và các phương thức get/set cho chúng.
class NhanVien extends SinhVien {
    private double luong;

    public NhanVien(String ten, int tuoi, double diemTrungBinh, double luong) {
        super(ten, tuoi, diemTrungBinh);
        this.luong = luong;
    }

    public double getLuong() {
        return luong;
    }

    public void setLuong(double luong) {
        this.luong = luong;
    }
}
  1. Viết một interface DiChuyen với phương thức diChuyen().
interface DiChuyen {
    void diChuyen();
}
  1. Viết một lớp Xe kế thừa từ lớp Object và implements interface DiChuyen.
class Xe implements DiChuyen {
    private String ten;

    public Xe(String ten) {
        this.ten = ten;
    }

    public String getTen() {
        return ten;
    }

    public void setTen(String ten){
      this.ten = ten;
    }
  	
  @override
  void diChuyen(){
    System.out.print("run");
  }
}
  1. Viết một lớp đối tượng Oto kế thừa từ lớp Xe và có thêm thuộc tính số chỗ ngồi và phương thức get/set cho chúng.
class Oto extends Xe {
    private int soChoNgoi;

    public Oto(String ten, int soChoNgoi) {
        super(ten);
        this.soChoNgoi = soChoNgoi;
    }

    public int getSoChoNgoi() {
        return soChoNgoi;
    }

    public void setSoChoNgoi(int soChoNgoi) {
        this.soChoNgoi = soChoNgoi;
    }
}
  1. Viết một lớp đối tượng XeMay kế thừa từ lớp Xe và có thêm thuộc tính côn tay và phương thức get/set cho chúng.
class XeMay extends Xe {
    private String conTay;

    public XeMay(String ten, String conTay) {
        super(ten);
        this.conTay = conTay;
    }

    public String getConTay() {
        return conTay;
    }

    public void setConTay(String conTay) {
        this.conTay = conTay;
    }
}
  1. Viết một class Main để tạo đối tượng và gọi các phương thức trong các lớp đã tạo.
class Main {
    public static void main(String[] args) {
        SinhVien sv = new SinhVien("Nguyen Van A", 20, 8.5);
        System.out.println("Ten sinh vien: " + sv.getTen());
        System.out.println("Tuoi sinh vien: " + sv.getTuoi());
        System.out.println("Diem trung binh: " + sv.getDiemTrungBinh());

        NhanVien nv = new NhanVien("Nguyen Van B", 25, 9.0, 1000);
        System.out.println("Ten Nhan vien: " + nv.getTen());
        System.out.println("Tuoi Nhan vien: " + nv.getTuoi());
        System.out.println("Diem trung binh: " + nv.getDiemTrungBinh());
    }
}
  1. Viết một interface CanFly với phương thức fly() và một class Chim kế thừa từ lớp Động vật và implements interface CanFly
interface CanFly {
    void fly();
}

class Chim extends DongVat implements CanFly {
    public void fly() {
        System.out.println("Chim bay di");
    }
}
  1. Viết một class Cho kế thừa từ lớp Động vật và implements interface CanFly
class Cho extends DongVat implements CanFly {
    public void fly() {
        System.out.println("Cho khong bay duoc");
    }
}
  1. Viết một hàm main để tạo đối tượng và gọi phương thức fly().
class Main {
    public static void main(String[] args) {
        Chim chim = new Chim();
        chim.fly();
        
        Cho cho = new Cho();
        cho.fly();
    }
}

10+ bài tập java về exception handling

  1. Viết một method divider() chia hai số nguyên và trả về kết quả. Nếu số bị chia bằng 0, method nên ném một ArithmeticException với message “Số bị chia không thể bằng 0”
public int divider(int a, int b) throws ArithmeticException {
    if (b == 0) {
        throw new ArithmeticException("Số bị chia không thể bằng 0");
    }
    return a / b;
}
  1. Viết một method getElement(int index) trả về phần tử tại vị trí index trong một mảng. Nếu index không hợp lệ (index < 0 hoặc index >= size của mảng), method nên ném một IndexOutOfBoundsException với message “Vị trí index không hợp lệ”
public int getElement(int[] arr, int index) throws IndexOutOfBoundsException {
    if (index < 0 || index >= arr.length) {
        throw new IndexOutOfBoundsException("Vị trí index không hợp lệ");
    }
    return arr[index];
}
  1. Viết một method readFile(String fileName) đọc nội dung từ một file. Nếu file không tồn tại hoặc không thể đọc được, method nên ném một IOException với message “Lỗi đọc file”
public String readFile(String fileName) throws IOException {
    try {
        return new String(Files.readAllBytes(Paths.get(fileName)));
    } catch (IOException e) {
        throw new IOException("Lỗi đọc file");
    }
}
  1. Viết một method parseInt(String str) chuyển đổi một chuỗi thành số nguyên. Nếu chuỗi không thể chuyển đổi được, method nên ném một NumberFormatException với message “Không thể chuyển đổi được số”
  2. Viết một method getAge(String birthdate) trả về tuổi tính từ ngày sinh. Nếu ngày sinh không hợp lệ (không đúng định dạng yyyy-MM-dd), method nên ném một IllegalArgumentException với message “Ngày sinh không hợp lệ”
public int getAge(String birthdate) throws IllegalArgumentException {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    sdf.setLenient(false);
    try {
        Date birthdate = sdf.parse(birthdate);
        LocalDate birthLocalDate = birthdate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
        LocalDate now = LocalDate.now();
        Period p = Period.between(birthLocalDate, now);
        return p.getYears();
    } catch (ParseException e) {
        throw new IllegalArgumentException("Ngày sinh không hợp lệ");
    }
}
  1. Viết một method checkUsername(String username) kiểm tra tính hợp lệ của tên đăng nhập. Nếu tên đăng nhập không hợp lệ (ít nhất 6 ký tự, chỉ gồm chữ và số), method nên ném một IllegalArgumentException với message “Tên đăng nhập không hợp lệ”
public void checkUsername(String username) throws IllegalArgumentException {
    if (username.length() < 6 || !username.matches("^[a-zA-Z0-9]*$")) {
        throw new IllegalArgumentException("Tên đăng nhập không hợp lệ");
    }
}

10+ bài tập java về File và API

  1. Viết một method createFile(String fileName) để tạo một file với tên fileName.
public void createFile(String fileName) {
    File file = new File(fileName);
    try {
        if (file.createNewFile()) {
            System.out.println("File created: " + fileName);
        } else {
            System.out.println("File already exists.");
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}
  1. Viết một method readFile(String fileName) để đọc nội dung file với tên fileName và in ra màn hình.
public void readFile(String fileName) {
    try {
        File file = new File(fileName);
        BufferedReader br = new BufferedReader(new FileReader(file));
        String line;
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }
        br.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
  1. Viết một method writeFile(String fileName, String content) để ghi nội dung content vào file với tên fileName.
public void writeFile(String fileName, String content) {
    try {
        File file = new File(fileName);
        BufferedWriter bw = new BufferedWriter(new FileWriter(file));
        bw.write(content);
        bw.close();
        System.out.println("File written: " + fileName);
    } catch (IOException e) {
        e.printStackTrace();
    }
}
  1. Viết một method copyFile(String sourceFileName, String targetFileName) để sao chép file từ sourceFileName sang targetFileName.
public void copyFile(String sourceFileName, String targetFileName) {
    try {
        File sourceFile = new File(sourceFileName);
        File targetFile = new File(targetFileName);
        Files.copy(sourceFile.toPath(), targetFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
        System.out.println("File copied: " + sourceFileName + " -> " + targetFileName);
    } catch (IOException e) {
        e.printStack();
    }
}
  1. Viết một method deleteFile(String fileName) để xóa file với tên fileName.
public void deleteFile(String fileName) {
    File file = new File(fileName);
    if(file.delete()) {
        System.out.println("File deleted: " + fileName);
    } else {
        System.out.println("File not found: " + fileName);
    }
}
  1. Viết một method listFiles(String directoryName) để liệt kê tất cả các file trong thư mục directoryName và in ra màn hình.
public void listFiles(String directoryName) {
    File directory = new File(directoryName);
    File[] files = directory.listFiles();
    if(files == null) {
        System.out.println("Directory not found: " + directoryName);
        return;
    }
    for (File file : files) {
        if (file.isFile()) {
            System.out.println(file.getName());
        }
    }
}
  1. Viết một method getFileExtension(String fileName) để lấy đuôi của file với tên fileName.
public String getFileExtension(String fileName) {
    int index = fileName.lastIndexOf(".");
    if (index == -1) {
        return "";
    }
    return fileName.substring(index + 1);
}
  1. Viết một method readCSV(String fileName) để đọc nội dung file CSV với tên fileName và in ra màn hình.
public void readCSV(String fileName) {
    try {
        File file = new File(fileName);
        BufferedReader br = new BufferedReader(new FileReader(file));
        String line;
        while ((line = br.readLine()) != null) {
            String[] values = line.split(",");
            for (String value : values) {
                System.out.print(value + " ");
            }
            System.out.println();
        }
        br.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
  1. Viết một method writeCSV(String fileName, List<String[]> data) để ghi dữ liệu vào file CSV với tên fileName và dữ liệu là List<String[]> data.
public void writeCSV(String fileName, List<String[]> data) {
    try {
        File file = new File(fileName);
        FileWriter fw = new FileWriter(file);
        for (String[] rowData : data) {
            fw.append(String.join(",", rowData));
            fw.append("\n");
        }
        fw.flush();
        fw.close();
        System.out.println("CSV file created successfully.");
    } catch (IOException e) {
        e.printStackTrace();
    }
}
  1. Viết một method copyFile(String sourceFile, String targetFile) để sao chép file từ sourceFile sang targetFile.
public void copyFile(String sourceFile, String targetFile) {
    try {
        File source = new File(sourceFile);
        File target = new File(targetFile);
        Files.copy(source.toPath(), target.toPath(), StandardCopyOption.REPLACE_EXISTING);
        System.out.println("File copied successfully.");
    } catch (IOException e) {
        e.printStackTrace();
    }
}
  1. Viết một method moveFile(String sourceFile, String targetFile) để di chuyển file từ sourceFile sang targetFile.
public void moveFile(String sourceFile, String targetFile) {
    try {
        File source = new File(sourceFile);
        File target = new File(targetFile);
        Files.move(source.toPath(), target.toPath(), StandardCopyOption.REPLACE_EXISTING);
        System.out.println("File moved successfully.");
    } catch (IOException e) {
        e.printStackTrace();
    }
}

10+ bài tập sử dụng JDBC trong Java

Viết chương trình để kết nối đến cơ sở dữ liệu và thực hiện truy vấn SELECT.

  1. Đáp án:
import java.sql.*;

public class JDBCExample {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mydb";
        String username = "root";
        String password = "password";

        try (Connection con = DriverManager.getConnection(url, username, password);
             Statement stmt = con.createStatement();
             ResultSet rs = stmt.executeQuery("SELECT * FROM employees")) {

            while (rs.next()) {
                int id = rs.getInt("id");
                String name = rs.getString("name");
                String email = rs.getString("email");

                System.out.println(id + " " + name + " " + email);
            }
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
}

Viết chương trình để thêm một bản ghi vào cơ sở dữ liệu.

  1. Đáp án:
import java.sql.*;

public class JDBCInsertExample {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mydb";
        String username = "root";
        String password = "password";

        try (Connection con = DriverManager.getConnection(url, username, password);
             PreparedStatement stmt = con.prepareStatement("INSERT INTO employees (name, email) VALUES (?, ?)")) {

            stmt.setString(1, "John Doe");
            stmt.setString(2, "john.doe@example.com");
            int rowsAffected = stmt.executeUpdate();

            System.out.println("Rows affected: " + rowsAffected);
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
}

Các bài tập trên có thể giúp bạn luyện tập và củng cố kiến thức về cú pháp Java, các biến và kiểu dữ liệu, các câu lệnh điều kiện, vòng lặp, các cấu trúc dữ liệu, và thuật toán. Nhưng để trở thành một lập trình viên Java chuyên nghiệp, bạn cần phải tiếp tục học và luyện tập thêm các kỹ thuật và công nghệ liên quan đến Java.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now