Refactor
:my
=>
'code'
Codes
Refactorings
Popular
Best
Submit
Spam
Account
Logout
Login
JavaScript doesn't seem to be activated, expect things to be ugly and sloppy!
Learn How to Create Your Own Programming Language
createyourproglang.com
Recent
Simple Particle Engine for a shooter game
Snake / Nibbles clone in C and Ncurses
Please improve
Parsing of XML data has high CPU usage
Convert simple Javascript to jQuery plugin
Active Record getting unique records
List the files in a directory without the directory name or the extension
clean the code
ohs system, recruitment software, hr software, oh&s software, human resources software, ohs software
Array parsing in a block
Popular
Parsing of XML data has high CPU usage
Please improve
Snake / Nibbles clone in C and Ncurses
List the files in a directory without the directory name or the extension
Convert simple Javascript to jQuery plugin
Simple Particle Engine for a shooter game
Active Record getting unique records
Breadth first cartesian product iterator
php refactoring
first BST
Pastable version of
Rational numbers - Problem :/
<pre class='prettyprint' language='java'>import javax.swing.JOptionPane; public class Rational { public static Rational ZERO = new Rational(0); public static Rational ONE = new Rational(1); private int numerator; // the numerator private int denominator; // the denominator public Rational(int numerator, int denominator) { // dealing with x/0 throwing exception if (denominator == 0) { throw new IllegalArgumentException("Denominator must be > 0"); } this.numerator = numerator; this.denominator = denominator; } // input constructor public Rational() { int num,den; String numStr,denStr; while(true) { try { numStr=JOptionPane.showInputDialog(null,"Input numerator:"); if (numStr==null) System.exit(0); num = Integer.parseInt(numStr); denStr=JOptionPane.showInputDialog(null,"Input denominator:"); if (denStr==null) System.exit(0); den = Integer.parseInt(denStr); if(den == 0) { // dealing with x/0 throwing exception throw new IllegalArgumentException("Denominator must be > 0"); } break; } catch(Exception e) { System.out.println(e); } } numerator = num; denominator = den; } // double constructor public Rational (double d) { int offset=1; while(d*offset!=(int)(d*offset)) { offset*=10; } numerator=(int)(d*offset); denominator=offset; } // string constructor public Rational(String numerator, String denominator) { int num = Integer.parseInt(numerator); int den = Integer.parseInt(denominator); if(den == 0) { // dealing with x/0 throwing exception throw new IllegalArgumentException("Denominator must be > 0"); } this.numerator = num; this.denominator = den; } // adding methods public Rational add(Rational arg) { return new Rational(arg.numerator*denominator+numerator*arg.denominator, denominator*arg.denominator); } public Rational add(int i) { return new Rational(i*denominator+numerator,denominator); } public Rational add(double d) { Rational addedVal = new Rational(d); return new Rational(addedVal.numerator*denominator+numerator*addedVal.denominator,denominator*addedVal.denominator); } // end of adding methods // multiplication methods public Rational mul(Rational arg) { return new Rational(arg.numerator*numerator, arg.denominator*denominator); } public Rational mul(int i) { return new Rational(i*numerator,denominator); } public Rational mul(double d) { Rational mulVal=new Rational(d); return new Rational(mulVal.numerator*numerator, mulVal.denominator*denominator); } // end of multiplications // subtraction methods public Rational sub(Rational arg) { return new Rational(arg.numerator*denominator-numerator*arg.denominator, denominator*arg.denominator); } public Rational sub(int i) { return new Rational(numerator-i*denominator,denominator); } public Rational sub(double d) { Rational subVal=new Rational(d); return new Rational(subVal.numerator*denominator-numerator*subVal.denominator, denominator*subVal.denominator); } // end of subtraction // division methods public Rational div(Rational arg) { if(arg.numerator == 0) { throw new ArithmeticException("Dividing by 0 bad idea ;)"); } int newDen=denominator*arg.numerator; int newNum=numerator*arg.denominator; return new Rational(newNum, newDen); } public Rational div(int i) { if(i == 0) { throw new ArithmeticException("Dividing by 0 bad idea ;)"); } return new Rational(numerator, denominator/i); } public Rational div(double d) { if(d == 0) { throw new ArithmeticException("Dividing by 0 bad idea ;)"); } Rational divVal=new Rational(d); int newDen=denominator*divVal.numerator; int newNum=numerator*divVal.denominator; return new Rational(newNum, newDen); } // end of division // comparison methods public boolean equals(Rational arg) { return arg.numerator*denominator==arg.denominator*numerator; } public boolean lessThan(Rational arg) { if (arg.denominator*numerator<denominator*arg.numerator) return true; else return false; } public boolean greaterThan(Rational arg) { if (arg.denominator*numerator>denominator*arg.numerator) return true; else return false; } // problem with (-2,1), (1,-1) etc... public boolean lessThanOrEqual(Rational arg) { if (arg.denominator*numerator<=denominator*arg.numerator) return true; else return false; } public boolean greaterThanOrEqual(Rational arg) { if (arg.denominator*numerator>=denominator*arg.numerator) return true; else return false; } // end of comparsion public String toString() { Rational red=reduce(); return red.numerator+"\\"+red.denominator; } // Working reduction // I don't know how to implement "void reduce()" private Rational reduce() // { int n = numerator; int gcd = denominator; int tmp; if(n < gcd) { tmp = n; n = gcd; gcd = tmp; } while(n!=0) { tmp = n; n = gcd%n; gcd = tmp; } return new Rational(numerator/gcd,denominator/gcd); } public static void main(String[] args) { Rational a=new Rational(); Rational i=new Rational(-2,1); Rational d=new Rational(1,-1); Rational s=new Rational("25", "75"); System.out.println(i.lessThanOrEqual(d)); /* Printing results JOptionPane.showMessageDialog(null,"DEFINED RATIONAL NUMBERS:\n-------------------------------------------\n" + "User rational number: "+a + "\nRational [1] (integer): "+i + "\nRational [2] (double): "+d + "\nRational [3] (string): "+s + "\n-------------------------------------------\nADDITION:\n-------------------------------------------\n" // Addition +a + " + " +i+ " = " + a.add(i) + "\n" +a + " + " +d+ " = " + a.add(d) + "\n" +a + " + " +s+ " = " + a.add(s) + "\n" +d + " + " +s+ " = " + d.add(s) + "\n" + "-------------------------------------------\nSUBTRACTION:\n-------------------------------------------\n" // Subtraction +i + " - " +a+ " = " + a.sub(i) + "\n" +d + " - " +a+ " = " + a.sub(d) + "\n" +s + " - " +a+ " = " + a.sub(s) + "\n" +d + " - " +s+ " = " + s.sub(d) + "\n" + "-------------------------------------------\nMULTIPLICATION:\n-------------------------------------------\n" // Multiplication +a + " * " +i+ " = " + a.mul(i) + "\n" +a + " * " +d+ " = " + a.mul(d) + "\n" +a + " * " +s+ " = " + a.mul(s) + "\n" +d + " * " +s+ " = " + s.mul(d) + "\n" + "-------------------------------------------\nDIVISION:\n-------------------------------------------\n" // Division +a + " : " +i+ " = " + a.div(i) + "\n" +a + " : " +d+ " = " + a.div(d) + "\n" +a + " : " +s+ " = " + a.div(s) + "\n" +d + " : " +s+ " = " + s.div(d) + "\n" + "-------------------------------------------\nCOMPARSIONS:\n-------------------------------------------\n" // Comparsions +a + " = " +i+ " = " + a.equals(i) + "\n" +a + " < " +d+ " = " + a.lessThan(d) + "\n" +a + " > " +s+ " = " + a.greaterThan(s) + "\n" +a + " <= " +s+ " = " + a.lessThanOrEqual(s) + "\n" +a + " >= " +d+ " = " + a.greaterThanOrEqual(d) + "\n", "Results", JOptionPane.PLAIN_MESSAGE); */ } }</pre> <a href="http://www.refactormycode.com/codes/1134-rational-numbers-problem" style="color:#fff" title="As seen on RefactorMyCode.com"><img alt="Small_logo" src="http://www.refactormycode.com/images/small_logo.gif" style="border:0" /></a>