Question java

Max0123456 Messages postés 97 Date d'inscription   Statut Membre Dernière intervention   -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour, comment supprimer un mot du fichier csv lorsqu'il est utilisé pour ne pas avoir deux fois la même question avec le même mot et arrêter lorsque tous les mots ont été utilisés ?
A voir également:

4 réponses

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Bonjour,

Quand tu poses une question, essaye de te mettre à la place de celui qui va te répondre : relis toi, ta question on ne peut pas y répondre car on ne comprend rien, cela manque d'explications, d'exemple et de code.
Plus ta question sera précise, plus la réponse que l'on te donnera sera pertinente, mais en l'état on ne peut même pas esquisser un début d'aide.
0
Max0123456 Messages postés 97 Date d'inscription   Statut Membre Dernière intervention  
 
import extensions.CSVFile;


CSVFile motPrix = loadCSV("motPrix");


class Mot {
 String mot;
 int prix;
}


void jouer (Mot info) {

  int JustePrix = info.prix;
  int Prix;
  println("Quel est le prix d'" + info.mot);
  

  do{
   compteur = compteur + 1;
   Prix = readInt(); 
   if (Prix<JustePrix){
    println("C'est +");
   }
         else if (Prix>JustePrix) {
    println("C'est -");
   }
  }
  while(Prix!=JustePrix);


Mot motAlea(){
  Mot mp = new Mot();
     int ligne = (int)(random() * rowCount(motPrix)); 
     mp.mot = getCell(motPrix, ligne, 0);
     String prix = getCell(motPrix, ligne, 1);
      mp.prix = stringToInt(prix);
     return mp;
    }


le nom du csv : motPrix
Il y a deux colonnes, une avec les mots et l'autre avec les prix
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Je ne sais pas comment tu appelles la méthode motAlea(), peut-être au travers d'une boucle while(true) qui ne finit jamais ? C'est à ce niveau là qu'il faudrait intervenir.

Au lieu de faire :
Mot motAlea(){
     int ligne = (int)(random() * rowCount(motPrix));
     // ...
     return mp;
}

while (true) {
    Mot mot = motAlea();
     // ...
}

Tu peux faire :
Mot getMot(int ligne) {
     // ...
     return mp;
}

for (int ligne : randomLignes()) {
    Mot mot = getMot(ligne);
     // ...
}

Avec :
List<Integer> randomLignes(){
    List<Integer> lignes = new ArrayList<>();
    for (int ligne = 0, count = rowCount(motPrix); ligne < count; ligne++)
        lignes.add(ligne);
    Collections.shuffle(lignes);
    return lignes;
}
0
Max0123456 Messages postés 97 Date d'inscription   Statut Membre Dernière intervention  
 
boolean rejouer(boolean sort) {

		println("Voulez-vous rejouer (O : Oui, N : Non) ?");
		char reponseJ = readChar();


		if(reponseJ == 'N') {
			sort = true;
		}
		if(reponseJ == 'O' || reponseJ == '0') {
			sort = false;
		}
		return sort;
	}


boolean sortie = false;
while(sortie == false) {
			Mot motAlea = motAlea();
			jouer(motAlea);
			sortie = rejouer(sortie);
		}
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
boolean sortie = false;
for (int ligne : randomLignes()) {
    Mot motAlea = getMot(ligne);
    jouer(motAlea);
    sortie = rejouer(sortie);
    if (sortie)
        break;
}
0