Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Fraction {
- private int numerator = 0;
- private int denominator = 1;
- public Fraction(int whole, int numer, int denom) { //3 params
- if (denom==0) {
- throw new IllegalArgumentException("Your denominator can't be zero!");
- }
- else if (denom<0) {
- numer*=-1;
- denom*=-1;
- }
- if (numer<0) {
- throw new IllegalArgumentException("Your numerator can't be negative!");
- }
- int numerator = whole * denom + numer;
- int denominator = denom;
- int gcd = gcd(numerator, denominator);
- numerator /= gcd;
- denominator /=gcd;
- }
- public Fraction(int numer, int denom) { //2 params
- if (denom==0) {
- throw new IllegalArgumentException("You can't divide by zero!");
- }
- else if (denom<0) {
- numer*=-1;
- denom*=-1;
- }
- numerator = numer;
- denominator = denom;
- int gcd = gcd(numerator, denominator);
- numerator /= gcd;
- denominator /=gcd;
- }
- public Fraction(int whole) { //1 param, whole number
- numerator = whole;
- denominator = 1;
- }
- public Fraction(String st) { //why did you type a string ): WORK ON THISSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
- String s=st;
- int under = getIndex(s,'_');
- int div = getIndex(s,'/');
- int numer=0;
- int denom=0;
- if (under==-1 && div==-1) {
- numer=Integer.parseInt(s);
- denom=1;
- }
- else if(under==-1) {
- numer=Integer.parseInt(s.substring(under+1,div));
- denom=Integer.parseInt(s.substring(div+1,s.length()));
- }
- else {
- denom=Integer.parseInt(s.substring(div+1,s.length()));
- if (s.charAt(0)!='-') {
- numer=Integer.parseInt(s.substring(0,under)) * denom + Integer.parseInt(s.substring(under+1,div));
- }
- else {
- numer=Integer.parseInt(s.substring(0,under)) * denom - Integer.parseInt(s.substring(under+1,div));
- }
- }
- if (denom < 0) {
- throw new IllegalArgumentException("Your denominator can't be less than zero!");
- }
- else if (denom == 0) {
- throw new IllegalArgumentException("You can't divide by zero!");
- }
- this.numerator=numer;
- this.denominator=denom;
- }
- public Fraction add(Fraction f) { //addition
- int gcd=gcd(f.getNumerator(), f.getDenominator());
- int lcm=(this.denominator*f.getDenominator())/gcd;
- int factor1 = lcm/this.denominator;
- int factor2 = lcm/f.getDenominator();
- int numerator = this.numerator * factor1 + f.getNumerator() * factor2;
- int denominator = lcm;
- gcd(numerator, denominator);
- numerator /= gcd;
- denominator /=gcd;
- return new Fraction(numerator,denominator);
- }
- public Fraction subtract(Fraction f) { //minus
- int gcd=gcd(f.getNumerator(), f.getDenominator());
- int lcm=(this.denominator*f.getDenominator())/gcd;
- int factor1 = lcm/this.denominator;
- int factor2 = lcm/f.getDenominator();
- int numerator = this.numerator * factor1 - f.getNumerator() * factor2;
- int denominator=lcm;
- gcd(numerator, denominator);
- numerator /= gcd;
- denominator /=gcd;
- if (denominator<0) {
- numerator*=-1;
- denominator*=1;
- }
- return new Fraction(numerator,denominator);
- }
- public Fraction multiply(Fraction f) {
- int numerator = this.numerator * f.getNumerator();
- int denominator = this.denominator * f.getDenominator();
- int gcd = gcd(numerator,denominator);
- numerator /= gcd;
- denominator /=gcd;
- return new Fraction(numerator,denominator);
- }
- public Fraction divide(Fraction f) {
- if (this.denominator == 0 || f.getDenominator() == 0) {
- throw new IllegalArgumentException("You can't divide by zero!");
- }
- int numerator = this.numerator * f.getDenominator();
- int denominator = this.denominator * f.getNumerator();
- int gcd = gcd(numerator,denominator);
- numerator /= gcd;
- denominator /=gcd;
- return new Fraction(numerator,denominator);
- }
- public int getNumerator() {
- return numerator;
- }
- public int getDenominator() {
- return denominator;
- }
- public static int gcd(int a, int b) {
- a = Math.abs(a);
- b = Math.abs(b);
- while (b!=0) {
- int temp=b;
- b=a%b;
- a=temp;
- }
- return Math.abs(a);
- }
- public static int getIndex(String a, char c) {
- for (int i=0;i<a.length();i++) {
- if (a.charAt(i)==c) {
- return i;
- }
- }
- return -1;
- }
- public String toString() {
- if (this.denominator == 1) {
- return Integer.toString(this.numerator);
- }
- else if (Math.abs(this.numerator) < this.denominator) {
- return this.numerator + "/" + this.denominator;
- }
- else {
- return this.numerator / this.denominator + "_" + Math.abs(this.numerator % this.denominator) + "/" + this.denominator;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement