Problème avec android studio et le type for

Résolu/Fermé
Thomix_1825 Messages postés 4 Date d'inscription jeudi 19 novembre 2020 Statut Membre Dernière intervention 4 décembre 2020 - Modifié le 19 nov. 2020 à 13:55
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 20 nov. 2020 à 10:54
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 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
19 nov. 2020 à 11:03
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 jeudi 19 novembre 2020 Statut Membre Dernière intervention 4 décembre 2020 1
Modifié le 19 nov. 2020 à 13:56
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 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
Modifié le 19 nov. 2020 à 11:32
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 jeudi 19 novembre 2020 Statut Membre Dernière intervention 4 décembre 2020 1
19 nov. 2020 à 20:08
Ta réponse m'a beaucoup aidé.

Il m'a suffit de rajouter un constructeur ;-)
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011 > Thomix_1825 Messages postés 4 Date d'inscription jeudi 19 novembre 2020 Statut Membre Dernière intervention 4 décembre 2020
20 nov. 2020 à 10:54
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