⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ex040202.java

📁 我在学习JAVA的讲义
💻 JAVA
字号:
//P104 2  (2)
//设计一个分数类,并测试

import java.io.*;

class Rational {
	public Rational(){
	}

	public Rational(Rational r){
		sign = r.sign;
		numerator = r.numerator;
		denominator = r.denominator;
	}
	
	public Rational(int n, int d){
		sign = n * d>0 ? 1 : -1;
		numerator = Math.abs(n);
		denominator = Math.abs(d);
		convert(this);		
	}
	
	public Rational add(Rational r){
		Rational t = new Rational();
		t.numerator = (this.sign * this.numerator) * r.denominator + 
					(r.sign * r.numerator) * this.denominator;
		t.denominator = this.denominator * r.denominator;
		t.sign = t.numerator > 0 ? 1 : -1;
		t.numerator = Math.abs(t.numerator);
		convert(t);	
		return t;
	}
	
	public Rational minus(Rational r){
		Rational t = new Rational(r);
		t.sign = - t.sign;
		return add(t);
	}
	
	public Rational multiply(Rational r){
		Rational t = new Rational(r);
		t.sign = this.sign * r.sign;
		t.numerator =  this.numerator * r.numerator;
		t.denominator =this.denominator * r.denominator;
		convert(t);	
		return t;
	}
	
	public Rational divide(Rational r){
		Rational t = new Rational(r);
		t.sign = r.sign;
		t.numerator =  r.denominator ;
		t.denominator =r.numerator;
		return multiply(t);
	}
	
	public void print(){
		if (numerator % denominator ==0)
			System.out.print((sign < 0?"-":"")+(numerator / denominator));
		else
			System.out.print((sign < 0?"-":"")+numerator+"/"+denominator);
	}
	
	private int sign;
	private int numerator;
	private int denominator;
	
	private void convert(Rational r){
		int t = r.numerator >= r.denominator ? r.denominator : r.numerator;
		
		while (t >1)
		{
			if (r.numerator % t == 0 && r.denominator % t ==0){
				break;
			}
			t--;
		}
		try{
			r.numerator = r.numerator / t;
			r.denominator = r.denominator / t;
		}catch (ArithmeticException e) { 
			System.out.println("\n\u0007 **** 分母 等于 0 ****");
			System.exit(1);
		}
	}
}

public class Ex040202{
	public static void main(String[] args){
		int m,n;
		
		System.out.println("输入第1个分数 ");
		System.out.print("分子 =");m=inputInt();
		System.out.print("分母 =");n=inputInt();
		Rational r1 = new Rational(m,n);
		System.out.println("输入第2个分数 ");
		System.out.print("分子 =");m=inputInt();
		System.out.print("分母 =");n=inputInt();
		Rational r2 = new Rational(m,n);

		System.out.println();
		r1.print();
		System.out.print(" + ");
		r2.print();
		System.out.print(" = ");
		r1.add(r2).print();
		
		System.out.println();
		r1.print();
		System.out.print(" - ");
		r2.print();
		System.out.print(" = ");
		r1.minus(r2).print();

		System.out.println();
		r1.print();
		System.out.print(" * ");
		r2.print();
		System.out.print(" = ");
		r1.multiply(r2).print();
		
		System.out.println();
		r1.print();
		System.out.print(" / ");
		r2.print();
		System.out.print(" = ");
		r1.divide(r2).print();
		System.out.println();				
	}
	
	public static int inputInt(){
		Reader ir = new InputStreamReader(System.in);
		BufferedReader r = new BufferedReader(ir);
		String sc="";
		int n=0;
		try{
			sc = r.readLine();
		}catch (IOException e){}
		try{
			n=Integer.parseInt(sc);
		}catch (NumberFormatException e){
			System.out.println("输入的数据不是整数");
			System.exit(1);
		}
		return n;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -