Jump to content

  • Log In with Google      Sign In   
  • Create Account


method questions


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
10 replies to this topic

#1 ThinkingsHard   Members   -  Reputation: 218

Like
0Likes
Like

Posted 08 February 2014 - 10:40 AM

Im working on a project for class where we take a card class and its assigned two values, one for number one for suit. My problem is i need to use two methods called toString and compareto. This would be someone okay except in the tester he does something like Card c1 =new Card(Card.CLUBS, 4) im not sure what the card.clubs is, if anyone can lead me in the right direction, im ay work on my phone, so ill be able yo check back and clarify around 5 pm. Also i dont want anyone to write any code for me, this is, again, a class project, i just can think of what to do, thank you.

Sponsor:

#2 Akusei   Members   -  Reputation: 220

Like
3Likes
Like

Posted 08 February 2014 - 11:58 AM

Card.CLUBS is most likely a static final of a data type. I say a data type and don't give a specific type because without the signature of Card's constructor or the source/compiled class for Card, you have no way of knowing what exactly it is. Here is an example of it as an integer.

public class Card
{
   public static final int CLUBS = 1;
}

-akusei

#3 ThinkingsHard   Members   -  Reputation: 218

Like
0Likes
Like

Posted 08 February 2014 - 01:15 PM

I... love...you... that perfectly answers that, i know what to do for that now. Ty! !

#4 TheChubu   Crossbones+   -  Reputation: 3600

Like
2Likes
Like

Posted 08 February 2014 - 01:16 PM

Looks like an enum to me.

public enum Card
{
    CLUB, SPADE, HEART, DIAMOND
}

If you have to do that sort of stuff use Java enums, that's why they're for. Integer enumerations are annoying and unsafe to use (ie, if its an integer you could do new Card(-128, 4), if its a true enum it wouldn't compile).


Edited by TheChubu, 08 February 2014 - 01:20 PM.

"I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"

 

My journals: dustArtemis ECS framework and Making a Terrain Generator


#5 d4n1   Members   -  Reputation: 423

Like
1Likes
Like

Posted 08 February 2014 - 01:19 PM

Its most probably an enum

 

 

public enum Cards {CLUB = 0, SPADE, HEART, DIAMOND};

 

 


Edited by d4n1, 08 February 2014 - 02:28 PM.


#6 Akusei   Members   -  Reputation: 220

Like
1Likes
Like

Posted 08 February 2014 - 01:25 PM

It's most definitely not an enum. The class being instantiated is Cards and it's passing Cards.CLUBS with no namespace. Try the following:

public enum Cards
{
   CLUBS
}

public class Cards
{
}

This will not compile because they are in the same package and have the same name. Without a namespace on the Cards enum being passed into the Cards constructor, it will not compile.


-akusei

#7 TheChubu   Crossbones+   -  Reputation: 3600

Like
1Likes
Like

Posted 08 February 2014 - 01:26 PM

Now that I'm thinking... If that is exactly the line of code, it can't be an enum, you can't instantiate a new enum object. They get initialized only once in Java, constructor is private.

 

Now if it's something like new Card (Cards.CLUB, 4) that would be an enum.

 

In any case my recommendation still stands, use enums instead of integer statics for that sort of thing (ie categorization).

 

EDIT: Sort of ninja'd, through not for the same reasons :D


Edited by TheChubu, 08 February 2014 - 01:27 PM.

"I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"

 

My journals: dustArtemis ECS framework and Making a Terrain Generator


#8 Akusei   Members   -  Reputation: 220

Like
2Likes
Like

Posted 08 February 2014 - 01:28 PM

Now that I'm thinking... If that is exactly the line of code, it can't be an enum, you can't instantiate a new enum object. They get initialized only once in Java, constructor is private.

 

Now if it's something like new Card (Cards.CLUB, 4) that would be an enum.

 

In any case my recommendation still stands, use enums instead of integer statics for that sort of thing (ie categorization).

 

I agree with TheChubu, although your exact line of code tells me that it's definitely not an enum and my reply gave you what it most likely is, I would suggest using an enum instead.

public enum Cards
{
   CLUB
}

public class Card
{
   public Card(Cards cardType, int value) { }
}

//usage
Card card = new Card(Cards.CLUB, 4);

Take note though, it's better to use enums when making something in Java for a typical OS, like Linux or Windows but in some cases, like programming in Java for Android it's best to use the "static final int" as this provides better performance; at least last I heard.


Edited by Akusei, 08 February 2014 - 01:31 PM.

-akusei

#9 d4n1   Members   -  Reputation: 423

Like
0Likes
Like

Posted 08 February 2014 - 02:27 PM

http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html


Edited by d4n1, 08 February 2014 - 02:37 PM.


#10 ThinkingsHard   Members   -  Reputation: 218

Like
0Likes
Like

Posted 08 February 2014 - 04:25 PM

I'm not sure in enum is what he wants for this program, I'm finally home so, here's a small snippet of the CardTester.java that the Card.Java has to work with.

public class CardTester 
{	
	/**
	 * Application ... has to have main method.
	 * 
	 * @param args Not used.
	 */
	public static void main(String[] args) 
	{
		Card c1 = new Card(4,Card.CLUBS);
		Card c2 = new Card(Card.KING, Card.HEARTS);
		Card c3 = new Card(Card.ACE, Card.DIAMONDS);

		System.out.println( c1 );
		System.out.println("4 of Clubs" + " EXPECTED");
		System.out.println( c2.toString() );
		System.out.println("King of Hearts" + " EXPECTED");

		//compare 4 of clubs (c1) with king of hearts (c2)  (should be smaller: -1)
		System.out.println( "\nComparing cards: " + c1.compareTo(c2) );
		System.out.println( " Expected value: " + -1 );

		//compare king of hearts (c2) with 4 of clubs (c1) (should be larger: 1)
		System.out.println( "\nComparing cards: " + c2.compareTo(c1) );
		System.out.println( " Expected value: " + 1 );

And here is another smaller snippet, which is making me think he wants multiple constructors,

final int A_BUNCH_OF_TESTS = 12;

		Random gen = new Random();

		for(int i=0; i<A_BUNCH_OF_TESTS; i++)
		{

			//create two random cards
			Card temp1 = new Card(gen.nextInt(13)+1, gen.nextInt(4) );
			Card temp2 = new Card(gen.nextInt(13)+1, gen.nextInt(4) );

So, with this in mind, does this send us straight back to Akusei's initial public static final int CLUBS = 0;?



#11 Akusei   Members   -  Reputation: 220

Like
1Likes
Like

Posted 08 February 2014 - 04:47 PM

Yes, with your provided code, especially the 2nd small snippet, it does look like he's expecting a static final int instead of an enum.


-akusei




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS