Olá a todos!
Vejamos o código:
Classe 1:
//Card.java
//Classe Card representa uma carta de baralho.
public class Card {
private String face;
private String suit;
//construtor de dois argumentos inicializa face e naipe da carta
public Card(String cardFace, String cardSuit)
{
face = cardFace;
suit = cardSuit;
}
//return
public String toString()
{
return face + "of" + suit;
}
}
Classe 2:
//DeckOfCards.java
//Classe DeckOfCards representa um baralho
import java.util.Random; //import class Random
public class DeckOfCards {
private Card deck[]; //array de objetos Card
private int currentCard; //indice do proximo Card a ser distribuido
private final int NUMBER_OF_CARDS = 52; //número constante de Cards
private Random randomNumbers; //gerador de número aleatório
//start construct
public DeckOfCards()
{
//array one
String faces[] = {"Ace", "Deuce", "Three", "Four", "Five", "Six",
"Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King"};
//array second
String suits[] = {"Hearts", "Diamonds", "Clubs", "Spades"};
deck = new Card[NUMBER_OF_CARDS]; //creates Array of objects Card
currentCard = 0; //configure currentCard, then the one Card distributed is deck[0]
randomNumbers = new Random(); //creates generator of numbers random
//fills pack with objects Card
for(int count = 0; count < deck.length;count++)
deck[count] = new Card (faces [count % 13], suits [count / 13]);
}//end of construct
//embaralha as cartas com um algoritmo de uma passagem
public void shuffle()
{
//depois de embaralhar, a distribuição deve iniciar em deck[0] novamente
currentCard = 0; //reinicializa currentCard
//para cada Card, seleciona outro Card aleatório e os compara
for(int first=0; first < deck.length; first++)
{
//seleciona número aleatório entre 0 e 51
int second = randomNumbers.nextInt(NUMBER_OF_CARDS);
//compara Card atual com Card aleatoriamente selecionado
Card temp = deck[first];
deck[first] = deck[second];
deck[second] = temp;
}
}
//distributes a card
public Card dealCard()
{
//determina se ainda há Cards a serem distribuidos
if(currentCard < deck.length)
return deck[currentCard++]; //return Card current on array
else
return null; //return null for indicate that all the Cards were distributes
}
}
Classe 3
//DeckOfCardsTest.java
//Application of shuffle and distributed Cards
public class DeckOfCardsTest {
//start program Java
public static void main(String args[])
{
//creates myDeckOfCards for have access application
DeckOfCards myDeckOfCards = new DeckOfCards();
myDeckOfCards.shuffle(); //puts Cards on order random
//print all the 52 cards on order on that they are distributed
for(int i = 0; i < 13; i++)
{
//distributes and prints 4 Cards
System.out.printf("%-20s%-%-20s%-%-20s%-%-20s%-\n", myDeckOfCards.dealCard(), myDeckOfCards.dealCard(),
myDeckOfCards.dealCard(), myDeckOfCards.dealCard());
}
}
}
Bom, não estou consiguindo executar o programa. Aparece o seguinte erro:
Exception in thread "main" java.util.MissingFormatWidthException: -%
at java.util.Formatter$FormatSpecifier.checkText(Formatter.java:2966)
at java.util.Formatter$FormatSpecifier.<init>(Formatter.java:2663)
at java.util.Formatter.parse(Formatter.java:2496)
at java.util.Formatter.format(Formatter.java:2430)
at java.io.PrintStream.format(PrintStream.java:937)
at java.io.PrintStream.printf(PrintStream.java:838)
at DeckOfCardsTest.main(DeckOfCardsTest.java:17)