Question java

Fermé
Max0123456 Messages postés 97 Date d'inscription dimanche 24 octobre 2021 Statut Membre Dernière intervention 2 février 2023 - 8 janv. 2022 à 15:27
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 - 8 janv. 2022 à 18:14
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 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
8 janv. 2022 à 16:44
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 dimanche 24 octobre 2021 Statut Membre Dernière intervention 2 février 2023
Modifié le 8 janv. 2022 à 17:33
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 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
8 janv. 2022 à 17:55
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 dimanche 24 octobre 2021 Statut Membre Dernière intervention 2 février 2023
8 janv. 2022 à 18:01
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 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
8 janv. 2022 à 18:14
boolean sortie = false;
for (int ligne : randomLignes()) {
    Mot motAlea = getMot(ligne);
    jouer(motAlea);
    sortie = rejouer(sortie);
    if (sortie)
        break;
}
0