1.11M Members

``````/*
Problem 3 Writing User-defined Methods
Programmer:
Date:			March 10,2011
ProgramName:Tuition.java
*/

import java.io.*;
import java.text.DecimalFormat;

public class Tuition
{
public static void main(String[] arg) throws IOException
{
//declare and construct variable
int hours;
double fees, rate, tuition;

//call methods
displayWelcome();
hours = getHours();
rate = getRate(hours);
tuition = calcTuition(hours, rate);
fees = calcFees(tuition);
displayTotal(tuition+fees);
}

//DisplayWelcome
public static void displayWelcome()
{
//welcome user output
System.out.println("\t\tWelcome!");
System.out.println(" ");
}
//the getHours() method
public static int getHours()throws IOException
{
//declare method variables
int hours = 0;
String strHours;

try
{
System.out.println("Please enter number of hours: ");
hours = Integer.parseInt(strHours);
}
catch(NumberFormatException e)
{
System.out.println("\tInvalid.");
}
return hours;
}

//the getRate() method
public static double getRate(int hours)
{
//declare method variables
double rate;

//if hours is greater than 15 charge 44.50 an hour if else 50.00 an hour.
if (hours > 15)
{
rate = 44.50;
}
else
{
rate = 50.00;
}
return rate;
}

//the calcTuition method
public static double calcTuition(int hours, double rate)
{
//declare method variable

double tuition;
//calculations
tuition = hours * rate;
return tuition;
}

//the calcFees method
public static double calcFees(double tuition)
{
//declare method variables
double fees;
//calculations
fees = tuition * .08;
return fees;
}

//the displayTotal method
public static void displayTotal(double total)
{
DecimalFormat twoDigits = new DecimalFormat("\$#,000.00");

double fees;
double tuition;

fees += tuition;

System.out.println("The total is: "+ tuition +".");
}
}``````

Ok, i am new to java this is my first full project to write. When i compile this program I get a varaible fees might not have been initialized and a variable tuition might not have been initialized. not sure what is going on, I have googled it etc. I am wondering if my methods are not returning a value or what. If i set the fees and tuition default value to 0.0d like my books example did - it runs BUT, does not run correctly - just then everything is calculated as being 0.0 total hours. HELP!

The compiler just wants to make sure that your variables have been assigned a value before you use them in an expression. If you assign them a default value when you declare them, the compiler will be happy

``double fees = 0;``

as you noted.

You are supplying the total to the `displayTotal(double total)` method, so why are you making a separate calculation (with empty variables) for the total that you are printing out

``System.out.println("The total is: "+ tuition +".");``

Yes the compiler is now happy but - now my expression is not valued correctly and i do not know if that is a problem of the initialization or with the code itself (previous methods).

now when I run it after compiling correctly. I input my hours of 40,42,30,1 and I get back a total of 0.0 no matter the input! What is going on?

Ezzaral -

``The public static void displayTotal(double total)``

was specified in my homework problem. That must be included but when the problem displayed the function of that method I provided the calculation...and they shouldn't be empty variables because i defined them and returned them from the previous methods. Is that correct or am I way off?

Well, look at tuition. Apparently it's 0.0 when you print it. What happens to it before you print it? How does it get that value? And what happens before that? How does it get the preceding value? Work back through the code this way and you should be able to spot it.

In this case, you should be able to spot it in about one hop backwards.

ok i got it thank you ezzaral..i did not realize that total in itself would produce an answer...brain fart!

I think you may be confused about variable scope. The "fees" you declared in main() is not the same variable that you are working with here

``````public static void displayTotal(double total)
{
DecimalFormat twoDigits = new DecimalFormat("\$#,000.00");

[B]double fees;[/B]
double tuition;

fees += tuition;

System.out.println("The total is: "+ tuition +".");
}``````

In displayTotal, you have delared a new and completely separate varialbe "fees" that is only visible within that method declaration.

Edit: Glad you got it figured.

oh ok thank you so much! I was wondering why i kept having to go back and declare my method variables!

my professor does not allow us to use a textbook or anything like that so I am learning from discussion forums and a basic java book i bought anyway at half price books....his theory is "coding is personal - no book can teach you - you already know" (this was quoted from the top of our syllabus! lol...

Question Answered as of 3 Years Ago by Ezzaral and jon.kiparsky

my professor does not allow us to use a textbook or anything like that

I hope he's got some redeeming qualities. He sounds like an idiot from over here.

You can learn a lot from reading through the language spec. It's not an easy read, and you'll probably puzzle over a lot of it, but you can get it free on line.
For example, this section tells you what you need to know about scope - but it's going to take a bit of work to understand it, if you're new to the language.
It's work worth doing, but it's still work.

You
This question has already been solved: Start a new discussion instead
Post:
View similar articles that have also been tagged: