dúvidas no programa de cartas!

11 respostas
Deise2007

É a primeira vez que faço contato com vcs e peço mil ajudas nesse complemento de programa que não consigo fazer mais nada ! Por favor, me ajudem, com mil luzes !!!

É assim: O programa tem que imprimir “sim” caso a carta Rei de Copas esteja na mão de cartas e “não”, caso contrário. A classe Carta tem um método equals(Carta outraCarta) que retorna true se a carta for igual à outraCarta. Preciso completar esse programa e não consigo pensar nos complementos para finalizá-lo !

import p1.aplic.cartas.*;
import java.util.*;

public class CartasMini7 {
 public static void main(String[] args) {
   final int NUMERO_DE_CARTAS=5;
   Baralho baralho=new Baralho();
   baralho.baralhar();
   Carta reideCopas = new Carta(Carta.REI, Carta.COPAS);

   Mao mao = new Mao();
   for (int i=0; i< NUMERO_DE_CARTAS; i++) {
     mao.adicionar(baralho.pegaCarta() );
   }
  Iterator dedo = mao.iterator ();

11 Respostas

T

Seria pedir demais você postar as outras classes que já estão prontas?

Deise2007

Como assim, postar as outras classes que já estão prontas Thingol? Não sei o que fazer ! O programa aparece assim mesmo como eu coloquei ! :roll:

T

Dona Deise , é que você pôs esta linha:

import p1.aplic.cartas.*;

O que leva a supor que as outras classes (Mao, Baralho etc.) já estejam prontas. Fica difícil ajudar, se a gente não tem o panorama completo. Por mais bobos que sejam, é importante ter os outros programas-fonte.

Deise2007

Pois é Thingol. O que acontece ? Essa linha já estava presente e a questão não fala de outras classes como vc mesmo citou (mao, baralho, etc), ou seja, eu tmb não tenho esse panorama completo ! O que apenas é pedido, é para completar o programa abaixo, e o programa vem exatamente coo eu escrevi! Tá dificil assim ? Ai meu Deus, imagine eu !! :cry:

lina

Oi,
então quem te passou esse programa, seja professor ou aluno… passou para você incompleto…

Aquela linha mostrada pelo Thingol, significa que esta classe precisa da classe importada… se não, não ira funcionar. a não ser que o importe esteja colocado ali por bobeira :wink:

Tchauzin!

Deise2007

Oi Lina, realmente. Pensando por esse lado, pode ser uma coisa ou outra ! Mas então, como seria essa classe importada? E se ignorarmos essa linha, como eu faria para fazer esse sistema funcionar de acordo com o pedido? Preciso de ajuda mesmo ! Sou iniciante nesse caso e ainda tenho que desvendar um mistério desse, e sem explicação, aí fica difícil né?! :oops:
No aguardo
bjs

T

Dá a impressão que "mao.iterator" lhe retornaria um iterador sobre as cartas. (Isso é meio sacana, mas se for assim: )

import p1.aplic.cartas.*;
import java.util.*;

public class CartasMini7 {
 public static void main(String[] args) {
   final int NUMERO_DE_CARTAS=5;
   Baralho baralho=new Baralho();
   baralho.baralhar();
   Carta reideCopas = new Carta(Carta.REI, Carta.COPAS);

   Mao mao = new Mao();
   for (int i=0; i&lt NUMERO_DE_CARTAS; i++) {
     mao.adicionar(baralho.pegaCarta() );
   }
  Iterator dedo = mao.iterator ();
  boolean achou = false;
  while (dedo.hasNext()) {
      Carta c = (Carta) dedo.next();
      if (c.equals (reideCopas)) {
        achou = true;
        break;
      }
   }
   if (achou) System.out.println ("sim"); else System.out.println ("nao");
}
}

Convenhamos que a questão tem informação incompleta, já que não lhe informou qual é a definição correta da rotina "iterator", e que tipos de objetos ela retorna. O professor ou concurso deveria dizer que "iterator" retorna um Iterator que retorna objetos do tipo Carta, ou então usar Generics para dar uma informação adicional. Ou seja:

import p1.aplic.cartas.*;
import java.util.*;

public class CartasMini7 {
 public static void main(String[] args) {
   final int NUMERO_DE_CARTAS=5;
   Baralho baralho=new Baralho();
   baralho.baralhar();
   Carta reideCopas = new Carta(Carta.REI, Carta.COPAS);

   Mao mao = new Mao();
   for (int i=0; i&lt NUMERO_DE_CARTAS; i++) {
     mao.adicionar(baralho.pegaCarta() );
   }
  Iterator<Carta> dedo = mao.iterator ();
  boolean achou = false;
  while (dedo.hasNext()) {
      Carta c = dedo.next();
      if (c.equals (reideCopas)) {
        achou = true;
        break;
      }
   }
   if (achou) System.out.println ("sim"); else System.out.println ("nao");
}
}
Deise2007

Ok Thingol, entendi tudo direitinho como ficaria o complemento, só falta eu testar(rodar). Só tem uma coisa que ainda não entendi, desde quando li o programa: é o iterator. O que seria esse iterator? Ah, detalhe: não entendo nada do assunto Baralho, então, se esse for um termo de jogo, aí mesmo que eu não sei!
Obrigada, bjs :-o

Murilo_CIN

iterator não tem a ver com baralho, é uma coisa feita para simplificar a programação. Ele é usado para percorrer algum tipo de repositório (que pode ser por exemplo as cartas que estão na mao do usuario). Um iterator funciona mais ou menos assim:
Enquanto existir uma proxima “coisa” (carta pro exemplo), ele retorna essa “coisa”.

sergiotaborda

Se existe a classe Mao procure se tem algum método que tenha como argumento uma Carta do tipo

mao.contains(carta) ou mao.temcarta(carta);

Se não existe a classe Mao implemente-a. Ela é basicamente uma coleção de cartas com os métodos adicionar(Carta c) , remover(Carta c) e temCarta(Carta c)

Deise2007

Gente, digitei o programa acima, assim como o Thingol me passou e mesmo assim ainda não rodou. Ele (programa) me sugeriu que fossem criadas as classes Carta, Baralho e Mao e assim eu aceitei. Logo, ficou assim:

package p1;

public class Carta{
 public Carta{
  // TODO Auto-generated constructor stub
 }
  public static Object Copas;
  public static Object Rei;
}
package p1;

public class Baralho{
 public void baralhar(){
  // TODO Auto-generated constructor stub
  }
  public Object pegaCarta(){
   // TODO Auto-generated constructor stub
   return null;
 }
}
package p1;

 import java.util.Iterator;

 public class Mao{
 public void adicionar(Object object){
  // TODO Auto-generated constructor stub
 }
  public Iterator iterator(){
   // TODO Auto-generated constructor stub
   return null;
 }
}

Então, voltei a classe CartasMini7 e ao rodar, nada feito! Deram esses problemas: [color=red]Exception in thread “main”[/color] [color=darkblue]java.lang.NullPointerException [/color]
[color=red]at p1.CartasMini7.main [/color][color=darkblue]u[/u][/color]

E agora gente, qual a solução pra esse programa esquisito rodar definitivamente? O que tenho que fazer (complementar) ??? :?:

Criado 10 de setembro de 2007
Ultima resposta 12 de set. de 2007
Respostas 11
Participantes 5