|
-
using the "this" method in a constructor
When I attempt to compile the following class I get an error message
pointing to one of my constructors stating "wrong number of arguments in
constructor. Can anyone shed some light on what I am missing?
Thanks.
/********************************************************
* A public class used for *
* calculating and processing time values. *
********************************************************/
public class MyTime
{
/******************************************
* private class variables to be visible *
* only to the methods in this class. *
******************************************/
private int mHours,
mMinutes,
mSeconds;
/***********************************************************
* Purpose: default constructor method to set the *
* instance var *
* *
*---------------------------------------------------------*
* USAGE: MyTime.setTime () *
*---------------------------------------------------------*
* does not return a value. *
***********************************************************/
public MyTime()
{
mHours = 00;
mMinutes = 00;
mSeconds = 00;
}
//public constructor method
public MyTime( int hours )
{
this( hours, 0, 0 ); //compiler complains here.
}
//old comments. ignore.
/***********************************************************
* Purpose: Called constructor method to set the *
* instance var *
* *
*---------------------------------------------------------*
* USAGE: setTime.setTime (int,int,int) *
*---------------------------------------------------------*
* does not return a value. *
***********************************************************/
public void MyTime( int hours, int minutes, int seconds )
{
setTime( hours, minutes, seconds );
}
/***********************************************************
* Purpose: set the instance vars so the methods in MyTime *
* can use them. *
* setTime() accepts arguements from the *
* calling routine. It tests the inputs for validity. *
*if any input is invalid set the instance vars to 0. *
*---------------------------------------------------------*
* USAGE: MyTime.setTime ( int, int, int ) *
*---------------------------------------------------------*
* does not return a value. *
***********************************************************/
public void setTime( int hours, int minutes, int seconds )
{
//set to look like garbage.
//Makes debugging easier.
mHours = -9999;
mMinutes = -9999;
mSeconds = -9999;
//test for valid hours input.
if( hours < 0 || hours > 24 )
{
//we fail and we set the instance vars to 0.
mHours = 0;
mMinutes = 0;
mSeconds = 0;
return;
}
else
//set the hours
mHours = hours;
//test for valid minutes input.
if ( minutes < 0 || minutes > 59 )
{
//we fail and we set the instance vars to 0.
mHours = 0;
mMinutes = 0;
mSeconds = 0;
return;
}
else
//set the minutes
mMinutes = minutes;
//test the seconds input
if ( seconds < 0 || seconds > 59 )
{
//we fail and we set the instance vars to 0.
mHours = 0;
mMinutes = 0;
mSeconds = 0;
return;
}
else
//set the seconds
mSeconds = seconds;
} //end of setTime
//getHour - this method returns the object's hour value.
public int getHour()
{
return mHours;
}//end getHour()
// getMinute - this method returns the object's minutevalue.
public int getMinute()
{
return mMinutes;
}//end getMinute()
//getSecond - this method returns the object's second value.
public int getSecond()
{
return mSeconds;
} //end getSecond()
/**********************************************************
* A public method that converts the time input into
* universal time format. It tests the values of the current
* instance variables for proper digit length and
* then formats the output. Once the
* values are correctly set the method returns.
*----------------------------------------------------------
* usage: x = object.toUnversalString();
* object is a class object.
*----------------------------------------------------------
* returns a string in the 24 hour format of hh:mm:ss
***********************************************************/
public String toUniversalString()
{
String result = "",
tempHours = "",
tempMinutes = "",
tempSeconds = "";
//if the hours is one digit in length
if ( mHours >= 1 && mHours <= 9 )
tempHours = tempHours + "0" + mHours;
//else hours occupies two digits.
else
tempHours = tempHours + mHours;
//get the proper digits for minutes.
tempMinutes = twoDigits(mMinutes);
//get the proper digits for seconds.
tempSeconds = twoDigits(mSeconds);
/* //if minutes occupies two digits
if ( mMinutes >= 0 && mMinutes <= 9 )
tempMinutes = tempMinutes + "0" + mMinutes;
//else minutes occupies two digits
else
tempMinutes = tempMinutes + mMinutes;
//if the seconds is one digit in length
if ( mSeconds >= 0 && mSeconds <= 9 )
tempSeconds = tempSeconds + "0" + mSeconds;
//else seconds occupies two digits.
else
tempSeconds = tempSeconds + mSeconds; */
//build our final string and then return.
result = result + tempHours + ":" + tempMinutes + ":" +tempSeconds;
return result;
}//end String toUniversalString()
/*******************************************************
* A public method that copies the time input into standard
* time format. It tests the values
* for proper digit length and formats the output. Once the
* values are correctly set the method returns.
* returns a string in the 12 hour format of hh:mm:ss AM/PM.
*********************************************************/
public String toString()
{
String result = "",
tempHours = "",
tempMinutes = "",
tempSeconds = "",
amPm = "AM";
//if mHours are more than 11
if( mHours >= 12 )
{
//case: if mHours are 12.
if ( mHours == 12 )
{
amPm = "PM";
tempHours = tempHours + mHours;
}
//case: if mHours are 24
else if ( mHours == 24 )
{
tempHours = tempHours + "00";
}
//mHours are more than 11, but not 12 or 24.
else
{
amPm = "PM";
tempHours = tempHours + (mHours - 12);
}
}
//else mHours are less than 12.
else
tempHours = tempHours + mHours;
//get the proper digits for minutes.
tempMinutes = twoDigits(mMinutes);
//get the proper digits for seconds.
tempSeconds = twoDigits(mSeconds);
//build our final string and then return.
result = result + tempHours + ":" + tempMinutes + ":" +tempSeconds
+ " " +amPm;
//we're done.
return result;
} //end String toString()
/*************************************************************
* A private method that converts any single digit
* integers to a two digit integer by adding a "0" preceeding
* the integer that was passed in as the argument.
* returns a two digit integer
*************************************************************/
private String twoDigits(int digits)
{
String tempDigits = "";
//if digits occupies two digits
if ( digits >= 0 && digits <= 9 )
tempDigits = tempDigits + "0" + digits;
//else digits occupies two digits
else
tempDigits = tempDigits + digits;
return tempDigits;
/*//if the seconds is one digit in length
if ( mSeconds >= 0 && mSeconds <= 9 )
tempSeconds = tempSeconds + "0" + mSeconds;
//else seconds occupies two digits.
else
tempSeconds = tempSeconds + mSeconds; */
}
/***************************************************************
* A public method that tests the current object against one
* that is passed in as an arguement for equality.
* returns true if they are equal and or false if they are not.
****************************************************************/
boolean equals(MyTime otherObject)
{
return ( (this.mHours == otherObject.mHours)
&& (this.mMinutes == otherObject.mMinutes)
&& (this.mSeconds == otherObject.mSeconds) );
} //end equals(MyTime otherObject)
}
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
Forum Rules
|
Top DevX Stories
Easy Web Services with SQL Server 2005 HTTP Endpoints
JavaOne 2005: Java Platform Roadmap Focuses on Ease of Development, Sun Focuses on the "Free" in F.O.S.S.
Wed Yourself to UML with the Power of Associations
Microsoft to Add AJAX Capabilities to ASP.NET
IBM's Cloudscape Versus MySQL
|
Bookmarks