Bài tập java nâng cao có lời giải năm 2024

200 Bài tập Java có lời giải chi tiết – Đây là loạt bài tập Java cơ bản có lời giải dành cho các bạn đang học Java. Việc làm các bài tập java có đáp án này giúp các bạn học dễ dàng hơn cũng như không gặp quá nhiều khó khăn khi vướng mắc.

Nếu bạn đang tìm kiếm một khóa học lập trình Java cho riêng mình, bạn có thể tham khảo khảo học Java cơ bản miễn phí tại đây hoặc Khóa học lập trình Java đầy đủ tại đây.

Bài tập Java cơ bản có đáp á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.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

package bai01;

import java.util.Scanner;

public class Main {

public static int nhap()

{

Scanner input \= new Scanner(System.in);

boolean check\= false;

int n\=0;

while(!check){

System.out.print(" ");

try{

n\= input.nextInt();

check\= true;

}catch(Exception e){

System.out.println("Ban phai nhap so! hay nhap lai...");

input.nextLine();

}

}

return (n);

}

public static int UCLN(int a, int b){

while(a!= b){

if(a\>b) a\= a-b;

else b\= b-a;

}

return (a);

}

public static void main(String[] args) {

System.out.println("Nhap a");

int a \= nhap();

System.out.println("Nhap b");

int b\= nhap();

System.out.println("Uoc chung lon nhat cua "+a+" va "+b+" la: "+UCLN(a,b));

System.out.println("Boi chung nho nhat cua "+a+" va "+b+" la: "+((a*b)/UCLN(a,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).

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

package bai02;

import java.util.Scanner;

public class Main {

public static void doiCoSo(int n,int base){

if(n\>=base) doiCoSo(n / base, base);

if(n % base\>9) System.out.printf("%c",n%base+55);

else

System.out.print((n % base));

}

public static int nhap(){

Scanner input\= new Scanner(System.in);

boolean check\= false;

int n\=0;

while(!check){

System.out.print(" ");

try{

n\= input.nextInt();

check\= true;

}catch(Exception e){

System.out.println("Ban phai nhap so! hay nhap lai...");

input.nextLine();

}

}

return (n);

}

public static void main(String[] args) {

System.out.println("Nhap n");

int n\= nhap();

System.out.println("Nhap vao co so can chuyen sang b");

int b\= nhap();

System.out.println("So " +n+ " chuyen sang co so " +b+ " thanh: ");

doiCoSo(n,b);

}

}

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.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

package bai03;

import java.util.Scanner;

public class Main {

public static int nhap(){

Scanner input\= new Scanner(System.in);

boolean check\= false;

int n\=0;

while(!check){

System.out.print(" ");

try{

n\= input.nextInt();

check\= true;

}catch(Exception e){

System.out.println("Ban phai nhap so! hay nhap lai...");

input.nextLine();

}

}

return (n);

}

public static int tinhTong(long i){

int sum\=0;

long n;

while(i!=0){

n\= i%10;

sum+= n;

i/=10;

}

return (sum);

}

public static void main(String[] args){

System.out.print("Nhap n");

int n\= nhap();

System.out.println("Tong cua so "+n+" = " +tinhTong(n));

}

}

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

Bài 04 :

package bai04;

import java.util.Scanner;

public class Main {

public static void phanTich(int n){

int i\=2;

while(n\>1){

if(cachamchung.checkSNT(i)){

if(n%i\==0){

System.out.print(i+".");

n/=i;

}

else i++;

}

else i++;

}

}

public static int nhap(){

Scanner input\= new Scanner(System.in);

boolean check\= false;

int n\=0;

while(!check){

System.out.print(" ");

try{

n\= input.nextInt();

check\= true;

}catch(Exception e){

System.out.println("Ban phai nhap so! hay nhap lai...");

input.nextLine();

}

}

return (n);

}

public static void main(String[] args) {

System.out.print("Nhap n");

int n\= nhap();

System.out.print("n= " );

phanTich(n);

}

}

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.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

package bai05;

import java.util.Scanner;

public class Main {

public static void lietKe(int n){

System.out.print(" 2");

for(int i\=3;i<n;i+=2){

if(cachamchung.checkSNT(i))System.out.print(" "+i);

}

}

public static int nhap(){

Scanner input\= new Scanner(System.in);

boolean check\= false;

int n\=0;

while(!check){

System.out.print(" ");

try{

n\= input.nextInt();

check\= true;

}catch(Exception e){

System.out.println("Ban phai nhap so! hay nhap lai...");

input.nextLine();

}

}

return (n);

}

public static void main(String[] args) {

System.out.print("Nhap n");

int n\= nhap();

System.out.println("Cac so nguyen to nho hon "+n+ " ");

lietKe(n);

}

}

Bài 6. Viết chương trình liệt kê n số nguyên tố đầu tiên.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

package bai06;

import java.util.Scanner;

public class Main {

public static void lietKe(int n){

int i\=2,count\=0;

while(count<n){

if(cachamchung.checkSNT(i)){

System.out.print(" "+i);

count++;

}

i++;

}

}

public static int nhap(){

Scanner input\= new Scanner(System.in);

boolean check\= false;

int n\=0;

while(!check){

System.out.print(" ");

try{

n\= input.nextInt();

check\= true;

}catch(Exception e){

System.out.println("Ban phai nhap so! hay nhap lai...");

input.nextLine();

}

}

return (n);

}

public static void main(String[] args) {

System.out.print("Nhap n");

int n\= nhap();

System.out.println(n+" so nguyen to dau tien la: ");

lietKe(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.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

package bai07;

import java.util.Scanner;

public class Main {

public static int nhap(){

Scanner input\= new Scanner(System.in);

boolean check\= false;

int n\=0;

while(!check){

System.out.print(" ");

try{

n\= input.nextInt();

check\= true;

}catch(Exception e){

System.out.println("Ban phai nhap so! hay nhap lai...");

input.nextLine();

}

}

return (n);

}

public static void main(String[] args) {

System.out.print("Nhap n");

int n\= nhap();

int[] f\= new int[n+1];

f[0]\= 1; f[1]\= 1;

for(int i\=2;i<=n;i++){

f[i]\= f[i-1]+f[i-2];

}

System.out.println("So Fibonanci thu "+n+" la: f["+n+"]= "+f[n]);

}

}

Bài 8. Một số được gọi là số thuận nghịch độc nếu ta đọc từ trái sang phải hay từ phải sang trái số đó ta vẫn nhận được một số giống nhau. Hãy liệt kê tất cả các số thuận nghịch độc có sáu chữ số (Ví dụ số: 558855).

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

Bài 08 :

package bai08;

public class Main {

public static boolean testSoThuanNghich(int n){

StringBuilder xau\= new StringBuilder();

String str\= ""+n;

xau.append(str);

String check\= ""+xau.reverse();

if(str.equals(check)) return true;

else return false;

}

public static void main(String[] args) {

int n,count\=0;

for(n\=100000 ; n<= 999999 ; n++){

if(testSoThuanNghich(n)){

System.out.println(n);count++;

}

}

System.out.println("Co "+count+" so thuan nghich co 6 chu so");

}

}

Bài 9. Viết chương trình liệt kê tất cả các xâu nhị phân độ dài n.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

package bai09;

import java.util.Scanner;

public class Main {

public static int nhap(){

Scanner input\= new Scanner(System.in);

boolean check\= false;

int n\=0;

while(!check){

System.out.print(" ");

try{

n\= input.nextInt();

check\= true;

}catch(Exception e){

System.out.println("Ban phai nhap so! hay nhap lai...");

input.nextLine();

}

}

return (n);

}

public static void main(String[] args) {

System.out.println("Nhap n");

int n\= nhap();

int[] array\= new int[n];

int tich;

do{

tich\= 1;

//In ra mang va tinh tich cac phan tu trong mang

System.out.println("");

for(int j\=0 ; j<n ; j++){

System.out.print(" " +array[j]);

tich*\= array[j];

}

int i\=n-1;

do{

if(array[i]\==0){

array[i]\=1;

for(int j\=n-1 ; j\>i ;j--){

array[j]\= 0;

}

break;

}

else i--;

}while(i\>=0);

}while(tich!=1);

}

}

Bài 10. Viết chương trình liệt kê tất cả các tập con k phần tử của 1, 2, ..,n (k≤n).

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

package bai10;

import java.util.Scanner;

public class Main {

public static int nhap(){

Scanner input\= new Scanner(System.in);

boolean check\= false;

int n\=0;

while(!check){

System.out.print(" ");

try{

n\= input.nextInt();

check\= true;

}catch(Exception e){

System.out.println("Ban phai nhap so! hay nhap lai...");

input.nextLine();

}

}

return (n);

}

public static void result(int a[],int k){

int i;

System.out.println();

for(i\=1 ; i<=k ; i++){

System.out.print(" "+a[i]);

}

}

public static void try_backTrack(int a[], int n, int k, int i){

int j;

for(j\=a[i-1]+1 ; j<=(n-k+i) ; j++){

a[i]\= j;

if(i\== k) result(a,k);

else try_backTrack(a, n, k, i+1);

}

}

public static void main(String[] args) {

System.out.println("Nhap n");

int n\= nhap();

int[] array\= new int[n+1];

int k;

System.out.println("Liet ke tat ca cac tap con k phan tu cua 1,2,..,"+n+" : ");

for(k\=1 ; k<=n ; k++){

System.out.println("\n Tap con "+k+" phan tu: ");

try_backTrack(array,n,k,1);

}

}

}

Download trọn bộ bài tập Java có lời giải

Phía bên trên là 10 bài tập đầu tiên, nếu bạn có mong muốn làm tiếp các bài tập tiếp theo thì có thể xem tiếp trọn bộ bài tập này tại đây:

Chủ đề