Carte da gioco

di il
2 risposte

Carte da gioco

Ciao, stò eseguendo una serie di esercizi per apprendere java, tra questi è presente l'esercizio sottostante di cui non riesco a capire l'errore.
La commessa dell'esercizio chiede:
/** scrivere un programma per ricevere dall'utente un dato che descriva
* una carta da gioco, usando le abbreviazioni seguenti:
* A = Asso
* 2 .... 10 = punteggi delle carte
* j = Jack
* d = Donna
* r = Re
* q = Quadri
* c = Cuori
* p = Picche
* f = Fiori
* Il programma deve stampare la descrzione completa della carta, come in questo esempio:
* dp
* Donna di Picche
* Realizzare una classe Card il cui costruttore riceve le lettere che descrivono la carta
* e il cui metodo
* getDescription restituisce una stringa che descrive compitamente la carta.
*/
Il mio problema e che mi restituisce la carta Jack senza che io dia in input alcun valore. allego il sorgente con la speranza che qualcuno abbia il tempo di dargli un'occhio.
grazie.
public class Card {
public Card(String Carta)

{
valoreCarta = Carta.substring(0, 1);
semeCarta = Carta.substring(1, 2);

}

public String getDescrizione()

{
risultato = "";
if(valoreCarta.equalsIgnoreCase("a"))
{
risultato = "Asso di";
}
if(valoreCarta.equalsIgnoreCase("j"))
{
risultato = "Jack di";
}
if(valoreCarta.equalsIgnoreCase("d"))
{
risultato = "Donna di";
}
if(valoreCarta.equalsIgnoreCase("2"))
{
risultato = "Due di";
}
if(valoreCarta.equalsIgnoreCase("3"))
{
risultato = "Tre di";
}
if(valoreCarta.equalsIgnoreCase("4"))
{
risultato = "Quattro di";
}
if(valoreCarta.equalsIgnoreCase("5"))
{
risultato = "Cinque di";
}
if(valoreCarta.equalsIgnoreCase("6"))
{
risultato = "Sei di";
}
if(valoreCarta.equalsIgnoreCase("7"))
{
risultato = "Sette di";
}
if(valoreCarta.equalsIgnoreCase("8"))
{
risultato = "Otto di";
}
if(valoreCarta.equalsIgnoreCase("9"))
{
risultato = "Nove di";
}
if(semeCarta.equalsIgnoreCase("q"))
{
risultato = "Quadri";
}
if(semeCarta.equalsIgnoreCase("c"))
{
risultato = "Cuori";
}
if(semeCarta.equalsIgnoreCase("p"))
{
risultato = "Picche";
}
if(semeCarta.equalsIgnoreCase("f"))
{
risultato = "Fiori";
}
return risultato + risultato;
}

private String valoreCarta;
private String semeCarta;
public String risultato;

}
********************** la classe per testare il programma **************************
import java.util.Scanner;

public class CardTest {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

Scanner in = new Scanner(System.in);

System.out.println("Inserisci le abbreviazioni della carta che desideri");
String carta = in.toString();
Card c = new Card(carta);
System.out.println("Il valore della carta è: " + c.getDescrizione() );


}

}

2 Risposte

  • Re: Carte da gioco

    L'errore sta qui:

    String carta = in.toString();

    da modificare in

    String carta = in.next();
  • Re: Carte da gioco

    Ti ringrazio, in effetti ora mi chiede di inserire le lettere iniziali, ma ci deve essere ancora qualcosa che non và, pur dando le iniziali mi restituisce sempre la corrispondenza dell'ultima lattere. Esempio, io ho inserito rf che indica Re di Fiorni, ma restituisce FioriFiorni, come vedi nell'output sottostante.

    Inserisci le abbreviazioni della carta che desideri
    rf
    Il valore della carta è: FioriFiori

    Ho modificato il sorgende assegnado una variabile diversa per distinguere i valori delle carte con i simboli, ma non ho ottenuto molto, ho provato ad assegnare una variabile per prendere incarico il valore della carta + il simbolo, ma anche qui non capisco mi restituisce solo il simbolo questa volta.

    Ti allego la classe modificata, mi sapresti dire ancora dove sbaglio.
    public class Card {
    public Card(String Carta)

    {
    valoreCarta = Carta.substring(0, 1);
    semeCarta = Carta.substring(1, 2);

    }

    public String getDescrizione()

    {
    risultato = "";
    risultato2 = "";
    cartaScelta = "";
    if(valoreCarta.equalsIgnoreCase("a"))
    {
    risultato = "Asso di";
    }
    if(valoreCarta.equalsIgnoreCase("j"))
    {
    risultato = "Jack di";
    }
    if(valoreCarta.equalsIgnoreCase("d"))
    {
    risultato = "Donna di";
    }
    if(valoreCarta.equalsIgnoreCase("2"))
    {
    risultato = "Due di";
    }
    if(valoreCarta.equalsIgnoreCase("3"))
    {
    risultato = "Tre di";
    }
    if(valoreCarta.equalsIgnoreCase("4"))
    {
    risultato = "Quattro di";
    }
    if(valoreCarta.equalsIgnoreCase("5"))
    {
    risultato = "Cinque di";
    }
    if(valoreCarta.equalsIgnoreCase("6"))
    {
    risultato = "Sei di";
    }
    if(valoreCarta.equalsIgnoreCase("7"))
    {
    risultato = "Sette di";
    }
    if(valoreCarta.equalsIgnoreCase("8"))
    {
    risultato = "Otto di";
    }
    if(valoreCarta.equalsIgnoreCase("9"))
    {
    risultato = "Nove di";
    }
    if(semeCarta.equalsIgnoreCase("q"))
    {
    risultato2 = "Quadri";
    }
    if(semeCarta.equalsIgnoreCase("c"))
    {
    risultato2 = "Cuori";
    }
    if(semeCarta.equalsIgnoreCase("p"))
    {
    risultato2 = "Picche";
    }
    if(semeCarta.equalsIgnoreCase("f"))
    {
    risultato2 = "Fiori";
    }
    cartaScelta = risultato + risultato2;
    return cartaScelta;
    }

    private String valoreCarta;
    private String semeCarta;
    public String risultato;
    public String risultato2;
    public String cartaScelta;

    }
Devi accedere o registrarti per scrivere nel forum
2 risposte