PDA

Click to See Complete Forum and Search --> : Using Coin Class


tmlucky14
Nov 13th, 2006, 03:14 PM
I am having trouble getting my Coin Program to run. I think my Coin.java is right, but my Runs.java program will not run. Can you tell me what I am doing wrong.

Using the Coin Class

The Coin class from Listing 5.4 in the text is in the file Coin.java. Copy it to your directory, then write a program to find the length of the longest run of heads in 100 flips of the coin. A skeleton of the program is in the file Runs.java. To use the Coin class you need to do the following in the program:

1. Create a coin object.
2. Inside the loop, you should use the flip method to flip the coin, the toString method (used implicitly) to print the results of the flip, and the getFace method to see if the result was HEADS. Keeping track of the current run length (the number of times in a row that the coin was HEADS) and the maximum run length is an exercise in loop techniques!
3. Print the result after the loop.



//********************************************************************
// Coin.java
//
// Represents a coin with two sides that can be flipped.
//********************************************************************

public class Coin
{
public final int HEADS = 0;
public final int TAILS = 1;

private int face;
private int id;

//-----------------------------------------------------------------
// Sets up the coin by flipping it initially.
//-----------------------------------------------------------------
public Coin (int anID)
{

id = anID;
System.out.println( "** in coin " + id + "'s constructor**" );
flip();
}

//-----------------------------------------------------------------
// Flips the coin by randomly choosing a face.
//-----------------------------------------------------------------
public void flip ()
{
System.out.println( "** in coin " + id + "'s flip **" );
face = (int) (Math.random() * 2);
}

//-----------------------------------------------------------------
// Returns the current face of the coin is head.
//-----------------------------------------------------------------
public int getFace ()
{
System.out.println( "** in coin " + id + "'s getFace **" );
return face;
}

//-----------------------------------------------------------------
// Returns the current face of the coin as a string.
//-----------------------------------------------------------------
public String toString()
{
String faceName;
System.out.println( "\n** in coin " + id + "'s toString **" );
if (face == HEADS)
faceName = "Heads";
else
faceName = "Tails";

return faceName;
}
}
___________________________________________________________-

// ********************************************************************
// Runs.java
//
// Finds the length of the longest run of heads in 100 flips of a coin.
// ********************************************************************

public class Runs
{
public static void main (String[] args)
{
final int FLIPS = 100; // number of coin flips

int currentRun = 0; // length of the current run of HEADS
int maxRun = 0; // length of the maximum run so far

// Create a coin object
Coin myCoin = new Coin();

if(myCoin.toString().equals("Heads"))
{
currentRun++;

if(currentRun > maxRun)
maxRun = currentRun;
}
else
{
currentRun = 0;
}




// Flip the coin FLIPS times
for (int i = 0; i < FLIPS; i++)
{
// Flip the coin & print the result

// Update the run information

}

// Print the results

}
}

System_Error
Nov 13th, 2006, 06:36 PM
I am having trouble getting my Coin Program to run. I think my Coin.java is right, but my Runs.java program will not run. Can you tell me what I am doing wrong.

What error are you getting?

eranga262154
Nov 13th, 2006, 09:39 PM
tmlucky14,

Try do put the complete question here. If not it makes lot of difficulties to you as well as for others.

DeadEyes
Nov 14th, 2006, 04:20 AM
Your Coin constructor expects an int.

eranga262154
Nov 14th, 2006, 08:23 AM
Your Coin constructor expects an int.


Sorry,

I'm not clear what you are saying.

DeadEyes
Nov 14th, 2006, 08:51 AM
//this is your constructor which takes an int
public Coin (int anID)
{

id = anID;
System.out.println( "** in coin " + id + "'s constructor**" );
flip();
}
:
:
//This is how your are creating the object
Coin myCoin = new Coin();
//should perhaps be
Coin myCoin = new Coin(0);

eranga262154
Nov 14th, 2006, 09:06 AM
Ok,
I got the point. Thanks

tmlucky14
Nov 15th, 2006, 07:20 PM
I compile the Runs.java and got a error

Runs.java:31: 'else' without 'if'
else
^
//

Can you tell why I am getting this error and if My Coin.java look ok. Thanks

********************************************************************
// Runs.java
//
// Finds the length of the longest run of heads in 100 flips of a coin.
// ********************************************************************
public class Runs
{
public static void main (String[] args)
{

final int FLIPS = 100; // number of coin flips

int currentRun = 0; // length of the current run of HEADS
int maxRun = 0; // length of the maximum run so far

// Create a coin object
Coin myCoin = new Coin();

// Flip the coin FLIPS times
for (int i = 0; i < FLIPS; i++)
{
// Flip the coin & print the result
myCoin.flip();
System.out.println(myCoin);

// Update the run information
if (myCoin.getface() == 0);
{
currentRun = currentRun + 1;
}
else
{
if (currentRun > maxRun);
maxRun = currentRun;

currentRun = 0;
}
}

// Print the results
System.out.println("The maxmimum run is: " + maxRun);
}
}

TBeck
Nov 15th, 2006, 08:33 PM
if (currentRun > maxRun);

I think they error should go away if you remove the ; from the end of the if line

tmlucky14
Nov 15th, 2006, 09:04 PM
That went away now, I got another error

Runs.java:34: not a statement
(maxRun = currentRun);
^
1 error

CornedBee
Nov 16th, 2006, 04:44 AM
The other if has a semicolon, too.
Also, the code line you pointed out does not exist in what you've posted, so please post updated code.

tmlucky14
Nov 16th, 2006, 02:14 PM
This part of my code is not working. Can you please help me. Thanks

if (currentRun > maxRun)
(maxRun = currentRun);

My error is
Runs.java:34: not a statement
(maxRun = currentRun);
^
1 error

CornedBee
Nov 16th, 2006, 03:01 PM
Remove the parentheses.

Tmcclain
Nov 16th, 2006, 04:17 PM
Now this part is not working

// Update the run information
if (myCoin.getface() == 0)

Runs.java:27: cannot resolve symbol
symbol : method getface ()
location: class Coin
if (myCoin.getface() == 0)
^
1 error

CornedBee
Nov 16th, 2006, 04:24 PM
Java is case-sensitive.

Tmcclain
Nov 16th, 2006, 04:57 PM
I am new to this so what does that mean and what do u think I should do to fix my problem. Thank

TBeck
Nov 16th, 2006, 05:59 PM
the .getface() must be .getFace()
it has to be the same capitialization as in the Coin class.