01/10/2018, 10:00

Bài tập về Class Phân số, không rõ em bị sai ở chỗ nào

Khi chạy chương trình này, em không hiểu sao mà khi chạy đến hàm tính tổng xong thì chương trình cũng kết thúc, bỏ qua tính hiệu, tích và thương mà em đã viết
mong mọi người giúp em ạ

 public class PhanSo {
       
         private int tu, mau;
         PhanSo(){
         }
         PhanSo(int t, int m) {
          tu=t;
          mau=m;
         }
         static int nhapgt() throws IOException{
             InputStreamReader isr = new InputStreamReader(System.in);
             BufferedReader br = new BufferedReader(isr);
             String str=br.readLine();
             return Integer.valueOf(str).intValue();
         }
         PhanSo nhapps(int x) throws IOException{
             int tu,mau;
             System.out.println("Nhap Phan so thu I");
             System.out.println("Tu so: ");
             tu=nhapgt();
             System.out.println("Mau so: ");
             do{
                 mau=nhapgt();
                 if(mau==0){
                     System.out.println("Nhap lai Phan So");
                 }
            }while(mau==0);
                 PhanSo ps =new PhanSo(tu, mau);
                 return ps;   
         }
         
         public void setTu(int tu)
         {
          this.tu=tu;
         }
         public void setMau(int mau)
         {
          this.mau=mau;
         }
         public int getTu()
         {
          return this.tu;
         }
         public int getMau()
         {
          return this.mau;
         }
         public void Hienthi(PhanSo ps) {
             System.out.println(this.tu+"/"+this.mau);
         }
         public int USCLN(int a, int b)
         {
          while( a != b )
          {
            if( a > b ){ 
                a = a - b;
            }
            else{ 
                b = b - a;
            }
          }
            return a;
         }

         public void rutGon(PhanSo ps)
         {
            int i = USCLN( this.getTu(),this.getMau() );
            this.setTu( this.getTu()/i );
            this.setMau( this.getMau()/i );
            System.out.println("Phan so da toi gian: " + ps.tu + "/" + ps.mau);
         }
         public void congPS(PhanSo ps)
         {
          int a = ( this.getTu() * ps.getMau() ) + ( ps.getTu() * this.getMau() );
          int b = ps.getMau() * this.getMau();
          PhanSo k = new PhanSo( a , b );
          k.rutGon( ps );
          System.out.println("Ket qua cong: " + k.tu + "/" + k.mau);
         }
         public void truPS(PhanSo ps)
         {
          int a = ( this.getTu() * ps.getMau() ) - ( ps.getTu() * this.getMau() );
          int b = ps.getMau() * this.getMau();
          PhanSo k = new PhanSo(a,b);
          k.rutGon(ps);
          System.out.println("Ket qua tru : " + k.tu + "/" + k.mau);
         }
         public void nhanPS(PhanSo ps)
         {
          int a=ps.tu*this.tu;
          int b=ps.mau*this.mau;
          PhanSo k=new PhanSo(a,b);
          k.rutGon(ps);
          System.out.println("Ket qua nhan: " + k.tu + "/" + k.mau);
         }
         public void chiaPS(PhanSo ps)
         {
          int a=this.tu*ps.mau;
          int b=this.mau*ps.tu;
          PhanSo k=new PhanSo(a,b);
          k.rutGon(ps);
          System.out.println("Ket qua chia: " + k.tu + "/" + k.mau);
         }
             
}
public static void main(String[] args) throws IOException{
        PhanSo ps1= new PhanSo();
        PhanSo ps2= new PhanSo();
        ps1=ps1.nhapps(1);
        ps2=ps2.nhapps(2);
        ps2.Hienthi(ps2);
        ps1.Hienthi(ps1);
        ps1.rutGon(ps1);
        ps2.rutGon(ps2);
        ps1.congPS(ps2);
        ps1.truPS(ps2);
        ps1.chiaPS(ps2);
        ps1.nhanPS(ps2);
  }
}
Hidan viết 12:16 ngày 01/10/2018

sai ở hàm USCLN, thử vứt 1 và -2 xem treo ngay:
USCLN(1,-2)

Chaser viết 12:15 ngày 01/10/2018

vậy em nên sửa lại phần hàm USCLN sao cho đúng ạ

HK boy viết 12:05 ngày 01/10/2018

int i = USCLN( this.getTu(),this.getMau() );

Thay bằng int i = USCLN(abs(this.getTu()), abs(this.getMau()));

Chaser viết 12:05 ngày 01/10/2018

Chạy được rồi ạ, cảm ơn các bác đã giúp em

HK boy viết 12:01 ngày 01/10/2018

Bạn đánh dấu accept vào câu trả lời giúp bạn tốt nhất nhé.

Bài liên quan
0