Re: Custom method logic help
Check to see if you're doing int division somewhere, that is an int divided by an int. Since this always returns an int, it may not be what you want. In that situation, cast one of the numbers to double.
Re: Custom method logic help
I tried casting it to a double the result fro percent and it still comes back as 0.00 and it coming back 0.00 tells me its doing double arithmetic right if it was int the debugger would say its equal to just 0 right?
Re: Custom method logic help
I don't know. I'd need to see more code to be able to know what's going on.
Re: Custom method logic help
If the result of a division is 0 then casting to a double will just result in 0.0. What you need to do is cast one or more of the operands to a double before the division is performed.
Re: Custom method logic help
all the variables are doubles, I don;t even have any int types
Re: Custom method logic help
You will need to do some more debugging. Make sure the getVolume method is return a valid value. What about howFull? What value does that hold? If it is a multiple of 100 then howFull % 100 will be zero.
Re: Custom method logic help
I did a print line and the get volume is fine see what is happening is percent is coming back 0 so getVolume is coming back as its empty, so the the time to fill method is always what it takes the pool to fill from empty. I am stumped why percent is 0.00??
Re: Custom method logic help
Post your full code or a SSCCE and the input values you are using.
Re: Custom method logic help
I instanciated the objects with the input values.
Thanks in advance!
Here is my class:
Code:
public class swimmingPool
{
static final double DRAIN_RATE = 1.1; //gallons per hour
static final double GALLONS_PER_CUBIC_FOOT = 7.48;
//instance variables
static double length, width, depth, fillRate, howFull;
//Default constructor
//intializes all instance variables to 0
//post condition: length = 0, width = 0, depth = 0. fillRate = 0
public swimmingPool()
{
setPool(0, 0, 0, 0, 0);
}//end of default constructor
//constructor that sets properties to user input at time of instantiation
//post conditions: length = l, width = w, depth = d, fillrate = f
public swimmingPool(double l, double w, double d, double f, double h)
{
setPool(l, w, d, f, h);
}//end of setPool constructor
//constructor that copies instance of swimmingPool class at instantiation
//post conditions: mySwimmingPool = new swimmingPool(firstSwimmingPool)
public swimmingPool(swimmingPool otherSwimmingPool)
{
length = otherSwimmingPool.length;
width = otherSwimmingPool.width;
depth = otherSwimmingPool.depth;
fillRate = otherSwimmingPool.fillRate;
howFull = otherSwimmingPool.howFull;
}//end of copy constructor
//Method to set Pool
//post condition length = l, width = w, depth = d, fillrate = f
public void setPool(double l, double w, double d, double f, double h)
{
if (l >= 0)
{
length = l;
}
else
length = 0;
if(w >= 0)
{
width = w;
}
else
width = 0;
if(d >= 0)
{
depth = d;
}
else
depth = 0;
if (f >= 0)
{
fillRate = f;
}
else
fillRate = 0;
if (h >= 0)
{
howFull = h;
}
else
howFull = 0;
}//end of setPool
public void setLength(double l)
{
length = l;
}
public void setWidth(double w)
{
width = w;
}
public void setDepth(double d)
{
depth = d;
}
public void setFillRate(double f)
{
fillRate = f;
}
public void setHowFull(double h)
{
howFull = h;
}
//method to get Length
//post condition length is returned
public double getLength()
{
return length;
}//end of getLength
//method to get width
//post condition width is returned
public double getWidth()
{
return width;
}//end of getWidth
//method to get depth
//post condition depth is returned
public double getDepth()
{
return depth;
}//end of getDepth
//method to get fillRate
//post condition fillRate is returned
public double getFillRate()
{
return fillRate;
}//end of getFillRate
//method to return how full the pool is
//post condition: how Full the pool is, is returned
public double getHowFull()
{
return howFull;
}//end of getHowFull
//method to get DRAIN_RATE
//post conditions DRAIN_RATE is returned
public double getDrainRate()
{
return DRAIN_RATE;
}//end of getDrainRate
//method to get volume of the pool in gallons
//volume = l * w * d, is returned
public double getVolume()
{
double volume;
volume = length * width * depth;
volume = volume * GALLONS_PER_CUBIC_FOOT;
return volume;
}//end of getVolume
//method to figure amount of water needed to fill the pool from how much is in it
//post condition number of gallons needed to fill is returned.
public double waterNeededToFill()
{
double waterNeeded, percent;
percent = (howFull % 100.0) * getVolume();
waterNeeded = getVolume() - percent;
return waterNeeded;
}//end of waterNeededToFill
//method to find the time needed to fill the pool from the point at which it is at
//postconditions: returns a double time to fill.
public double timeToFill()
{
double time;
time = waterNeededToFill() / (fillRate - DRAIN_RATE);
return time;
}//end timeToFill
//method to find the time needed to empty the pool
//postcondition double time needed returned
public double timeToEmpty()
{
double time;
if(howFull == 0)
{
time = getVolume() / DRAIN_RATE;
}
else
{
time = howFull / DRAIN_RATE;
}
return time;
}//end of time to empty
//method to add water to the pool
//post condition: howFull = (fillRate - DRAIN_RATE) * time
public void addWater(double time)
{
howFull = (fillRate - DRAIN_RATE) * time;
}//end addWater
//method to drain water over a given period of time
//post condition howFill = DRAIN_RATE * time
public void drainWater(double time)
{
howFull = DRAIN_RATE * time;
}
}//end of class swimmingPool
here's my client:
Code:
import java.util.*;
public class testPool
{
static Scanner console = new Scanner(System.in);
public static void main(String[] args)
{
double tenToEighty;
swimmingPool bigPool = new swimmingPool();
swimmingPool emptyPool = new swimmingPool(55, 34, 6, 165, 0);
swimmingPool tenPercentFullPool = new swimmingPool(55, 34, 6, 165, 10);
swimmingPool eightyPercentFullPool = new swimmingPool(55, 34, 6, 165, 80);
swimmingPool fullPool = new swimmingPool(55, 34, 6, 165, 100);
System.out.println("Please enter the length, width, depth, and fill rate; each separated by a space, then press enter.");
bigPool.setLength(console.nextDouble());
bigPool.setWidth(console.nextDouble());
bigPool.setDepth(console.nextDouble());
bigPool.setFillRate(console.nextDouble());
System.out.println("The Length of the pool is: " + String.format("%.2f", bigPool.getLength()) + "ft");
System.out.println("The Width of the pool is: " + String.format("%.2f", bigPool.getWidth()) + "ft");
System.out.println("The Depth of the pool is: " + String.format("%.2f", bigPool.getDepth()) + "ft");
System.out.println("The Fill rate is: " + String.format("%.2f", bigPool.getFillRate()) + "gal");
System.out.println("The Drain rate is: " + String.format("%.2f", bigPool.getDrainRate()) + "gal");
System.out.println("The Volume of the pool is: " + String.format("%.2f", bigPool.getVolume()) + "gal");
System.out.println("The time to fill the pool from empty is: " + String.format("%.2f", emptyPool.timeToFill()) + " hours");
tenToEighty = tenPercentFullPool.timeToFill() - eightyPercentFullPool.timeToFill();
System.out.println(tenPercentFullPool.timeToFill());
System.out.println(eightyPercentFullPool.timeToFill());
System.out.println("The time to fill the pool from 10% to 80% is: " + String .format("%.2f", tenToEighty) + " hours");
}
}
Re: Custom method logic help
The only pool that is used in your code is bigPool and it gets its values from used input. However you do not get the user to enter a value for howFull therefore it will have the default value of 0. Guess what the result of 0 % 100 is?
Re: Custom method logic help
Rule #1: DON'T USE STATIC VARIABLES!
Also that's not how you calculate precentages.
Re: Custom method logic help
no I use others here the bottom of the client:
Code:
System.out.println(tenPercentFullPool.timeToFill());
System.out.println(eightyPercentFullPool.timeToFill());
System.out.println("The time to fill the pool from 10% to 80% is: " + String .format("%.2f", tenToEighty) + " hours");
Re: Custom method logic help
Please read and re-read my post above.
Re: Custom method logic help
Do you understand my concerns? If not please say something, because I'm going to bed very soon.
Re: Custom method logic help
/me throws sand into Pete's eyes.
1 Attachment(s)
Re: Custom method logic help
I have been round and round and this is crazy. I rewrote part just to segregate what is going on.
so first I did this:
Code:
public double waterNeededToFill()
{
double waterNeeded, percent;
double volumeGal = getVolume();
percent = volumeGal * (howFull / 100.00);
waterNeeded = getVolume() - percent;
return waterNeeded;
}//end of waterNeededToFill
I added the double variable volumeGal = getVolume() it returns to the caller correct.
then percent executes equally the same value as volumeGal that tells me (howfull / 100.00) is coming out to be = 1
if how full is 0.00 how is 0.00 /100.00 coming out to be 1?
here is the screen from the compiler.
Attachment 2008
Re: Custom method logic help
Have you made your static variables non-static? Are you even listening to anything I post? You're not responding to it so I can only guess not and fear that I'm just wasting time. Please prove this wrong.
Re: Custom method logic help
The assignment parameters state to use static instance variables and static named constants. I wasn't ignoring you. I guess I should have stated that. sorry
Re: Custom method logic help
Quote:
Originally Posted by
mwr1976
The assignment parameters state to use static instance variables and static named constants. I wasn't ignoring you. I guess I should have stated that. sorry
Yes for constants, but not for those variables. Please post your assignment instructions verbatim.