Problème avec android studio et le type for

Résolu
Thomix_1825 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   -
Le code :

 for( int i=1;i <= 13;i ++) {
        pioche.add(new Card(Card.CardType.CARREAU,i));
        pioche.add(new Card(Card.CardType.COEUR,i));
        pioche.add(new Card(Card.CardType.PIQUE,i));
        pioche.add(new Card(Card.CardType.TREFLE,i));
    }


Il met for en rouge et i <= 13;i ++ pourtant la syntaxe est correct.

Et me renvoie ça comme erreur ;

/home/fast/AndroidStudioProjects/MySoliatire/app/src/main/java/fr/succes/mysoliatire/Game.java:41: error: illegal start of type
for( int i=1;i <= 13;i ++) {
^



Quelqu'un sait m'aider ?


Merci d'avance.
Good day ;-).
A voir également:

3 réponses

Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Bonjour,

Il faudrait nous montrer le code de tout le fichier (en utilisant la balise < code java> du forum pour qu'on y comprenne quelque chose)
Mais là comme ça, j'ai l'impression que ton soucis est que ce code ne se trouve pas à l'intérieur d'une méthode ou du constructeur d'une classe.

Xavier
0
Thomix_1825 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   1
 
Ok Xavier merci,c'était pour ajouter une nouvelle carte ( 13 ) dans chaque pile,je code un genre de Solitaire.

Il se trouve à l'intérieur de la classe Game je pense.

Je t'envoie tout le code :


package fr.succes.mysoliatire;

import java.io.Serializable;
import java.util.Vector;

public class Game implements Serializable{

    public static class Stack extends java.util.Stack<Card> {}
    public static class Deck extends java.util.Stack<Card> {}

    //Nota Bene : Stack<Card> = piles de cartes.

    public static final int STACK_COUNT = 4;
    public static final int DECK_COUNT = 7;

    public Stack [] stacks = new Stack[STACK_COUNT];
    public Deck [] decks = new Deck[DECK_COUNT];
    public Vector<Card> pioche = new Vector<>();
    public Vector<Card> returnedPioche = new Vector();

     for( int i=1;i <= 13;i ++) {
        pioche.add(new Card(Card.CardType.CARREAU,i));
        pioche.add(new Card(Card.CardType.COEUR,i));
        pioche.add(new Card(Card.CardType.PIQUE,i));
        pioche.add(new Card(Card.CardType.TREFLE,i));
    }

     for(int deckIndex = 0 ; deckIndex<DECK_COUNT;deckIndex++) {
        decks [ deckIndex] = new Deck();
        for ( int  cardIndex = 0;cardIndex < deckIndex+1; cardIndex++ ) {
            int position = (int) (Math.random() * pioche.size());
            Card removedCard = pioche.elementAt( position );
            pioche.removeElementAt( position);
            decks [deckIndex].push (removedCard);
            if (cardIndex == deckIndex ) removedCard.setReturned( true);
        }
    }


  for(int stackIndex = 0;stackIndex<STACK_COUNT;stackIndex ++) {
        stacks [stackIndex] = new Stack();
    }


}

0
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
C'est bien ce que je pensais : tes blocs "for" ne sont pas placés à l'intérieur de méthodes.
On ne met pas de code directement dans le corps de la classe, il faut définir un constructeur et des méthodes dans lesquels on place le code.
Le constructeur est appelé lorsqu'on crée une instance de l'objet en utilisant new Game().
Les méthodes peuvent être appelées au sein de l'objet, ou, si elles sont publiques, depuis n'importe quel autre endroit de ton code.
Ici je te mets le constructeur qui appellera une méthode privée pour chacune de tes boucles for.

Par exemple on pourrait faire ça :
package fr.succes.mysoliatire;

import java.io.Serializable;
import java.util.Vector;

public class Game implements Serializable{

    public static class Stack extends java.util.Stack<Card> {}
    public static class Deck extends java.util.Stack<Card> {}

    //Nota Bene : Stack<Card> = piles de cartes.

    public static final int STACK_COUNT = 4;
    public static final int DECK_COUNT = 7;

    public Stack [] stacks = new Stack[STACK_COUNT];
    public Deck [] decks = new Deck[DECK_COUNT];
    public Vector<Card> pioche = new Vector<>();
    public Vector<Card> returnedPioche = new Vector();

    public Game(){
        createDeck();
        shuffleDeck();
        initializeStacks();
    }

    private void createDeck(){
         for( int i=1;i <= 13;i ++) {
               pioche.add(new Card(Card.CardType.CARREAU,i));
               pioche.add(new Card(Card.CardType.COEUR,i));
               pioche.add(new Card(Card.CardType.PIQUE,i));
               pioche.add(new Card(Card.CardType.TREFLE,i));
         }
    }

    private void shuffleDeck(){
         for(int deckIndex = 0 ; deckIndex<DECK_COUNT;deckIndex++) {
               decks [ deckIndex] = new Deck();
               for ( int  cardIndex = 0;cardIndex < deckIndex+1; cardIndex++ ) {
                   int position = (int) (Math.random() * pioche.size());
                   Card removedCard = pioche.elementAt( position );
                   pioche.removeElementAt( position);
                   decks [deckIndex].push (removedCard);
                   if (cardIndex == deckIndex ) removedCard.setReturned( true);
               }
          }
    }

    private void initializeStacks(){
        for(int stackIndex = 0;stackIndex<STACK_COUNT;stackIndex ++) {
            stacks [stackIndex] = new Stack();
        }
    }
}


(Je code surtout en C#, le Java ressemble beaucoup mais avec quelques nuances... J'espère ne pas avoir écrit de bêtise mais tu auras peut-être quelques ajustements à faire)
0
Thomix_1825 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   1
 
Ta réponse m'a beaucoup aidé.

Il m'a suffit de rajouter un constructeur ;-)
0
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011 > Thomix_1825 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
Cool :)

Du coup, n'hésite pas à marquer ton sujet comme étant Résolu, ça aide à maintenir le forum lisible (ça se fait sur le message initial)
0