not the else, the compiler will still complain then. every time the metod must return something.Clasically you treat all your special cases in if statements and let a default one as the return of the method.
When this is not possible, you must return something to signal that something goes wrong there.For this returning a special type of o bject or in worst case an null is a must.
----- Original Message ----- From: "Alex Hall" <mehgcap@xxxxxxxxx>
To: <programmingblind@xxxxxxxxxxxxx> Sent: Monday, November 15, 2010 8:46 PM Subject: Re: Java problem
Looks like the subtract method does not always return. Look at where you have return statements (inside if statements). Look at what those if statements say. Can you think of a time when the fraction might not return? Why would it not return? Hint: the else statement will be handy here. On 11/15/10, Gilbert Neiva <gneiva@xxxxxxx> wrote:Ok, in my last post I had mensioned that I would add more methods. I added asubtract method that would subtract two fractions. I get an error whenrunning the program with J2SDK. When I run the program with Eclipse, it runs fine, except for the error that it mensions after it has finished running.Here is my Fraction class. public class Fraction { int numerator; // Holds numerator int denominator; // Holds denominator // Constructor passes int values from num and denum to numerator, and denominator. public Fraction(int num, int denom) { numerator = num; denominator = denom; } // Default constructor sets data fields to 0 public Fraction() { numerator = 0; denominator = 0; } // Methods return values of numerator and denominator public int getNumerator() { return numerator; } public int getDenominator() { return denominator; } // Method returns printed formatted string public String toString() { return numerator + "/" + denominator; } // Method adds two fractions together public Fraction add(Fraction frac1) { Fraction fraction_1 = new Fraction(); Fraction fraction_2 = new Fraction(); Fraction result = new Fraction(); Fraction printResult = new Fraction(); fraction_1.denominator = denominator * frac1.denominator; fraction_1.numerator = numerator * frac1.denominator; fraction_2.denominator = frac1.denominator * denominator; fraction_2.numerator = frac1.numerator * denominator; result.numerator = fraction_1.numerator + fraction_2.numerator; result.denominator = denominator * frac1.denominator; printResult = new Fraction(result.numerator, result.denominator); return printResult; } // Method subtracts two fractions public Fraction subtract(Fraction frac1) { Fraction fraction_1 = new Fraction(); Fraction fraction_2 = new Fraction(); Fraction result = new Fraction(); Fraction printResult = new Fraction(); fraction_1.denominator = denominator * frac1.denominator; fraction_1.numerator = numerator * frac1.denominator; fraction_2.denominator = frac1.denominator * denominator; fraction_2.numerator = frac1.numerator * denominator; result.numerator = fraction_1.numerator - fraction_2.numerator; result.denominator = denominator * frac1.denominator; // If both numerator and denominator are negative if (result.numerator < 0 && result.denominator < 0) { printResult = new Fraction(Math.abs(result.numerator), Math.abs(result.denominator)); return printResult; } if (result.numerator > 0 && result.denominator < 0) { printResult = new Fraction(result.numerator*-1, Math.abs(result.denominator)); return printResult; } } } // End of class Here is my source code for the driver class. import java.util.Scanner; // Import Scanner class // Class FractionDriver inputs two fractions and adds and subtracts them public class FractionDriver { public static void main(String[] args) { // Declare local data fields int numerator; // Holds numerator int denominator; // Holds denominator Scanner inData = new Scanner(System.in); // Scanner object Fraction frac1 = new Fraction(); Fraction frac2 = new Fraction(); Fraction answer = new Fraction(); // Ask user for numerators and denominators. System.out.println("Enter numerator for fraction 1:"); numerator = inData.nextInt(); System.out.println("Enter denominator for fraction 1:"); denominator = inData.nextInt(); frac1 = new Fraction(numerator, denominator); System.out.println("Fraction 1 is " + frac1 + "."); System.out.println("Enter numerator for fraction 2:"); numerator = inData.nextInt(); System.out.println("Enter denominator for fraction 2:"); denominator = inData.nextInt(); frac2 = new Fraction(numerator, denominator); System.out.println("Fraction 2 is " + frac2 + "."); answer = frac1.add(frac2); System.out.println(frac1 + " + " + frac2 + " = " + answer); answer = frac2.subtract(frac1); System.out.println(frac2 + " - " + frac1 + " = " + answer); } } When I run the program with Eclipse, this is what I get. Enter numerator for fraction 1: 2 Enter denominator for fraction 1: 5 Fraction 1 is 2/5. Enter numerator for fraction 2: 3 Enter denominator for fraction 2: 7 Fraction 2 is 3/7. 2/5 + 3/7 = 29/35Exception in thread "main" java.lang.Error: Unresolved compilation problem:This method must return a result of type Fraction at Fraction.subtract(Fraction.java:49) at FractionDriver.main(FractionDriver.java:33) When I run the program with J2SDK, I get the following. C:\Users\user\Desktop\COMP268\Practice\Fractions\src>javac *.java Fraction.java:74: missing return statement } ^ 1 error C:\Users\user\Desktop\COMP268\Practice\Fractions\src> What am I doing wrong? Gilbert Neiva-- Have a great day, Alex (msg sent from GMail website) mehgcap@xxxxxxxxx; http://www.facebook.com/mehgcap __________ View the list's information and change your settings at //www.freelists.org/list/programmingblind
__________View the list's information and change your settings at //www.freelists.org/list/programmingblind