Phân số là sự biểu diễn số hữu tỷ dưới dạng tỷ lệ của hai số nguyên, trong đó số ở trên được gọi là tử số, còn số ở dưới được gọi là mẫu số. Điều kiện bắt buộc là mẫu số phải khác 0.
Bài 1: Lớp phân số có 2 thuộc tính sở hữu riêng là các số nguyên xác định tử số và mẫu số. Hãy xây dựng lớp PhanSo có các thuộc tính như trên và có các phương thức sau:
o Phương thức nhapDL() để nhập vào một phân số
o Tìm dạng tối giản của phân số đã nhập.
import java.io.DataInputStream;
import java.io.IOException;
public class PhanSo {
private int tuSo;
private int mauSo;
// Các phương thức
public String nhapXau() { // Nhap vao 1 xau ky tu
String st;
DataInputStream strea=new DataInputStream(System.in);
try{
st=strea.readLine();
}catch(IOException ie){st="0";}
return st;
}
public int doiInt(String st) { // Doi sang so nguyen int
int so;
try{
so=Integer.parseInt(st);
}catch(NumberFormatException ne){so=0;}
return so;
}
public double doiDouble(String st) { // Doi sang so nguyen int
double so;
try{
so=Double.parseDouble(st);
}catch(NumberFormatException ne){so=0.0;
}
return so;
}
public void nhapPS() {
System.out.print("Tu so :");
tuSo=doiInt(nhapXau());
System.out.print("Mau so :");
do {
mauSo=doiInt(nhapXau());
if(mauSo==0) System.out.print("Mau so ==0 => Nhap lai :");
}while(mauSo==0);
}
public void hienThiPS() {
System.out.print(tuSo + "\\" + mauSo);
}
int UCLN(int a, int b) {
while(a!=b) {
if(a>b) a-=b;
else b-=a;
}
return a;
}
public void toiGianPS() {
int ucln=UCLN(tuSo,mauSo);
tuSo/=ucln;
mauSo/=ucln;
}
public static void main(String arg[]) {
PhanSo ps=new PhanSo();
System.out.println("\n ==== NHAP PHAN SO ====");
ps.nhapPS();
System.out.println("\n ==== PHAN SO DA NHAP ====");
ps.hienThiPS();
System.out.println("\n ==== PHAN SO TOI GIAN ====");
ps.toiGianPS();
ps.hienThiPS();
}
}
Bài 2: Xây dựng lớp phân số gồm 2 thuộc tính là tử và mẫu, các phương thức nhập dữ liệu từ bàn phím, cộng 2 phân số, trừ 2 phân số, chia 2 phân số, nhân 2 phân số
import java.util.Scanner;
public class TestPhanSo {
public static void main(String[] args) {
PhanSo phanSo1=new PhanSo();
PhanSo phanSo2=new PhanSo();
System.out.print("Nhap phan so thu nhat:\n "); phanSo1.input();
System.out.print("Nhap phan so thu hai: \n"); phanSo2.input();
System.out.print("----2 PHAN SO BAN NHAP----\nPhan so 1: "); phanSo1.HienThiPS();
System.out.print("\nPhan so 2: "); phanSo2.HienThiPS();
// gọi phương thức cộng, trừ, nhân, chia 2 phân số
System.out.println();
phanSo1.nhanPhanSo(phanSo2);
phanSo1.chiaPhanSo(phanSo2);
phanSo1.congPhanSo(phanSo2);
phanSo1.truPhanSo(phanSo2);
}
}
class PhanSo {
private int tu, mau;
private Scanner sc = new Scanner(System.in);
public PhanSo(int tu, int mau) {
super();
this.tu = tu;
this.mau = mau;
}
public PhanSo() {}
public void input()
{
System.out.print("Nhap tu so: "); this.tu = sc.nextInt();
System.out.print("Nhap mau so: "); this.mau = sc.nextInt();
}
public int getTu()
{
return this.tu;
}
public int getMau() {
return this.mau;
}
public void setTu(int tu) {
this.tu = tu;
}
public void setMau(int mau) {
this.mau = mau;
}
public int timUSCLN(int a, int b) {
while (a != b) {
if (a > b) {
a -= b;
} else {
b -= a;
}
}
return a;
}
public void HienThiPS()
{
System.out.print(this.tu+"/"+this.mau);
}
public void toiGianPhanSo() {
int i = timUSCLN(this.getTu(), this.getMau());
this.setTu(this.getTu() / i);
this.setMau(this.getMau() / i);
}
public void congPhanSo(PhanSo ps) {
int ts = this.getTu() * ps.getMau() + ps.getTu() * this.getMau();
int ms = this.getMau() * ps.getMau();
PhanSo phanSoTong = new PhanSo(ts, ms);
phanSoTong.toiGianPhanSo();
System.out.println("Tổng hai phân số = " + phanSoTong.tu + "/" + phanSoTong.mau);
}
public void truPhanSo(PhanSo ps) {
int ts = this.getTu() * ps.getMau() - ps.getTu() * this.getMau();
int ms = this.getMau() * ps.getMau();
PhanSo phanSoHieu = new PhanSo(ts, ms);
phanSoHieu.toiGianPhanSo();
System.out.println("Hiệu hai phân số = " + phanSoHieu.tu + "/" + phanSoHieu.mau);
}
public void nhanPhanSo(PhanSo ps) {
int ts = this.getTu() * ps.getTu();
int ms = this.getMau() * ps.getMau();
PhanSo phanSoTich = new PhanSo(ts, ms);
phanSoTich.toiGianPhanSo();
System.out.println("Tích hai phân số = " + phanSoTich.tu + "/" + phanSoTich.mau);
}
public void chiaPhanSo(PhanSo ps) {
int ts = this.getTu() * ps.getMau();
int ms = this.getMau() * ps.getTu();
PhanSo phanSoThuong = new PhanSo(ts, ms);
phanSoThuong.toiGianPhanSo();
System.out.println("Thương hai phân số = " + phanSoThuong.tu + "/" + phanSoThuong.mau);
}
}
hay