Problème avec android studio et le type for [Résolu]

Signaler
Messages postés
3
Date d'inscription
jeudi 19 novembre 2020
Statut
Membre
Dernière intervention
19 novembre 2020
-
Messages postés
3656
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
20 novembre 2020
-
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 ;-).

3 réponses

Messages postés
3656
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
20 novembre 2020
975
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
Messages postés
3
Date d'inscription
jeudi 19 novembre 2020
Statut
Membre
Dernière intervention
19 novembre 2020
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();
    }


}

Messages postés
3656
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
20 novembre 2020
975
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)
Messages postés
3
Date d'inscription
jeudi 19 novembre 2020
Statut
Membre
Dernière intervention
19 novembre 2020
1
Ta réponse m'a beaucoup aidé.

Il m'a suffit de rajouter un constructeur ;-)
Messages postés
3656
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
20 novembre 2020
975 >
Messages postés
3
Date d'inscription
jeudi 19 novembre 2020
Statut
Membre
Dernière intervention
19 novembre 2020

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)