Giải phương trình bậc 2 bằng Java

Đề bài: Viết chương trình sử dụng ngôn ngữ lập trình Java để giải và biện luận phương trình bậc 2


Yêu cầu kiến thức:

  • Xác định chính xác kiểu dữ liệu cho các biến
  • Biết sử dụng thư viện Scanner để nhập liệu dữ liệu từ bàn phím

Code tham khảo dưới đây được viết trên JDK ver 8.x:

package timoday; import java.util.Scanner; public class PTB2 { public static void main[String[] args] { // Tạo đối tượng sc từ lớp Scanner để cho phép nhập liệu từ bàn phím Scanner sc = new Scanner[System.in]; // Khai báo biến double a, b, c, x1, x2, del; // Nhập hệ số System.out.print["Nhập vào hệ số a = "]; a = sc.nextDouble[]; System.out.print["Nhập vào hệ số b = "]; b = sc.nextDouble[]; System.out.print["Nhập vào hệ số c = "]; c = sc.nextDouble[]; // Giải và biện luận phương trình bậc 2 if [a == 0] { if [b == 0] { if [c == 0] { System.out.println["Phương trình vô số nghiệm!"]; } else { System.out.println["Phương trình vô nghiệm!"]; } } else { System.out.println["Phương trình có nghiệm là: " + [-c / b]]; } } else { // Trường hợp a != 0 // Tính giá trị delta del = b * b - 4 * a * c; if [del < 0] { System.out.println["Phương trình vô nghiệm!"]; } else if [del == 0] { x1 = x2 = -b / [2 * a]; System.out.println["Phương trình có nghiệm kép: " + x1]; } else { x1 = [-b + Math.sqrt[del]] / [2 * a]; x2 = [-b - Math.sqrt[del]] / [2 * a]; System.out.println["Phương trình có 2 nghiệm phân biệt là:\nx1 = " + x1 + "\nx2 = " + x2]; } } sc.close[]; } }


Kết luận:

  • Bạn có thể tham khảo thêm khóa học lập trình C từ cơ bản đến nâng cao. Xem tại đây
  • Bạn có thể tham khảo thêm khóa học Thành thạo lập trình C#. Xem tại đây

Các thẻ: bài tậpHọc lập trìnhLập trình Java

Bài tập viết chương trình giải phương trình bậc 2 trong java swing hướng đối tượng. Giải PT bậc 2, PT bậc 1 với Java có ứng dụng try catch bắt lỗi nhập dữ liệu.

1. Giới thiệu bài toán

Viết chương trình giải phương trình bậc 2 là một bài tập đơn giản và thường gặp phải khi bạn mới học lập trình. Giải PT bậc 2 giúp bạn hiểu rõ hơn cấu trúc if, else và cách sử dụng biến trong ngôn ngữ lập trình. Cách giải quyết bài toán theo tư duy lập trình đều giống nhau với các ngôn ngữ.

Trong Java hay C++, Python đều vậy. Đều ứng dụng cách giải dựa vào cách giải thực tế về mặt toán học. Giả sử mình có đầu bài bài toán như sau:

Bạn hãy viết chương trình giải phương trình bậc 2 bằng ngôn ngữ Java hướng đối tượng. Xây dựng lớp Phuongtrinhbac2 gồm các thuộc tính a, b, c lần lượt là các hệ số của phương trình. Xây dựng phương thức nhapPT[] để nhập các hệ số a, b, c. Xây dựng phương thức giaiPT[] để giải phương trình vừa nhập.Các giá trị nghiệm in ra màn hình làm tròn đến phần thập phân thứ 2.

Nếu phương trình không hợp lệ, in kêt quả ra màn hình.

2. Phương pháp giải bài toán

Thuật toán giải quyết giống với cách giải đã học trong môn Toán học. Trong lập trình có các trường hợp có thể xảy ra như sau:

  1. Phương trình có hệ số của a =0 [ b và c khác 0]
  2. Phương trình có đầy đủ hệ số.

Đối với phương trình có hệ số a =0. Lúc này chúng ta quay trở về bài toán giải phương trình bậc 1. Nghiệm x = -c/b

Đối với chương trình bậc 2 bình thường [ đầy đủ các hệ số a, b c] thì cách giải như sau: Chúng ta khai báo biến delta.
delta = b^2 – 4*a*c. Sau đó lại có 3 trường hợp:

  • Nếu delta < 0 thì phương trình vô nghiệm!
  • Nếu delta == 0 thì phương trình có nghiệm kép x= -b/[2*a]
  • Nếu delta >0 thì phương trình có 2 nghiệm phân biệt:x1 = [-b + sqrt[delta]] / [2*a];

    x2 = [-b – sqrt[delta]] / [2*a];

Nếu giả sử người dùng nhập vào hệ số a=b=0 thì sẽ thông báo phương trình không hợp lệ!

3. Code giải phương trình bậc 2 Java

Để chạy được chương trình, bạn cần cài đặt java, cấu hình java cho ide nào đó thì mới chạy được nhé! Ở đây mình đang sử dụng Eclipse.

Trong chương trình, mình có sử dụng làm tròn biến đến phần thập phân thứ 2 trong java. Nếu bạn không hiểu có thể xem thêm tại đây.

Ngoài các phương thức như đã nếu ở phần giới thiệu bài toán. Mình có tạo thêm phương thức nhapDouble[]. Phương thức này giúp bạn nhập vào từ bàn phím một biến kiểu double. Nếu người dùng nhập sai thì cần nhập lại.

Mời bạn tham khảo chương trình hoàn chính của mình!

// code by admin tailieu.pro // //github.com/duongdinh24/ import java.util.Scanner; //import java.math.*; import java.io.*; public class Phuongtrinhbac2 { private double a; private double b; private double c; public Phuongtrinhbac2[]{ } // Phương thức tạo lập public Phuongtrinhbac2[double a, double b, double c]{ this.a=a; this.b=b; this.c=c; } // Phương thức nhập dữ liệu public double nhapDouble[] { double so; Scanner scan = new Scanner[System.in]; try { so = Double.parseDouble[scan.nextLine[]]; } catch [Exception e] { // Nếu nhập vào lỗi System.out.println["Nhap lai!"]; so=nhapDouble[]; // Đệ quy hàm nhập } return so; // Trả về giá trị nhập } void nhapPT[] { System.out.println["Moi ban nhap phuong trinh can giai: "]; System.out.println["a: "];a=nhapDouble[]; System.out.println["b: "];b=nhapDouble[]; System.out.println["c: "];c=nhapDouble[]; } void giaiPt[] { if[a==0] { if[b!=0] { double x; x= -c/b; x=Math.round[x*100.0]/100.0; // làm tròn số thập phân System.out.println["Nghiem phuong trinh: "+x]; } else if[b==0] { System.out.println["Phuong trinh khong hop le!"]; return; } } else { double delta= b*b -4*a*c; if[delta

Chủ Đề