Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- import java.util.Objects;
- class TestFraction {
- public static void main(String[] args) {
- StaticFraction f1 = StaticFraction.getFraction(1, 2);
- //StaticFraction f2 = StaticFraction.getFraction(1, 2);
- // System.out.println(f1);
- StaticFraction.print();
- }
- }
- public class StaticFraction {
- final int numerator, denom;
- static ArrayList<StaticFraction> f;
- FinalFraction add = new FinalFraction(1, 1);
- private static int tos = 0;//стрелочка нужна для for each стат методе
- StaticFraction(int a, int b) {
- int[] result = red(a, b);
- a = result[0];
- b = result[1];
- if (a * b > 0) {
- numerator = Math.abs(a);
- denom = Math.abs(b);
- } else if (a * b == 0) {
- numerator = 0;
- denom = 1;
- } else {
- numerator = -Math.abs(a);
- denom = Math.abs(b);
- }
- }
- StaticFraction(String s) {
- int a, b;
- s.trim(); //удаляем пробелы
- int d = s.indexOf('/'); //индекс слэша
- if (d < 0) {
- a = Integer.parseInt(s);
- b = 1;
- int[] result = red(a, b);
- a = result[0];
- b = result[1];
- } else {
- String s1 = s.substring(0, d);
- String s2 = s.substring(d + 1);
- a = Integer.parseInt(s1);
- b = Integer.parseInt(s2);
- }
- numerator = a;
- denom = b;
- }
- public int getDenom() {
- return denom;
- }
- public int getNumerator() {
- return numerator;
- }
- private int[] red(int a, int b) {
- int c = nod(a, b);
- int n = a / c;
- int d = b / c;
- int[] result = {n, d};
- return result;
- }
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (!(o instanceof FinalFraction)) return false;
- FinalFraction that = (FinalFraction) o;
- return getNumerator() == that.getNum() &&
- getDenom() == that.getDen();
- }
- @Override
- public int hashCode() {
- return Objects.hash(getNumerator(), getDenom());
- }
- private int nod(int a, int b) {
- a = Math.abs(a);
- b = Math.abs(b);
- int max = Math.max(a, b);
- int nod;
- for (int i = max; i > 1; i--)
- if (a % i == 0 && b % i == 0) {
- nod = i;
- return nod;
- }
- return 1;
- }
- static StaticFraction getFraction(int a, int b) {
- if (tos == 1)
- for (int i = 0; i < f.size(); i++)
- if (f.get(i).getNumerator() == a && f.get(i).getDenom() == b) return f.get(i);
- tos = 1;
- StaticFraction frac = new StaticFraction(a, b);
- f.add(frac);
- return frac;
- }
- @Override
- public String toString() {
- return numerator +
- "/" + denom;
- }
- static void print() {
- for (int i = 0; i < f.size(); i++) {
- System.out.println(f.get(i));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement