Debutant java probleme de methode
Résolu/Fermé
A voir également:
- Debutant java probleme de methode
- Waptrick java football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Jeux java itel football - Télécharger - Jeux vidéo
- Java jre - Télécharger - Langages
- Jeux java itel 5360 ✓ - Forum Mobile
6 réponses
Utilisateur anonyme
9 mars 2011 à 07:07
9 mars 2011 à 07:07
Salut,
Si tu triais ton tableau en utilisant sort de la classe Arrays ce serait un jeu d'enfant, la valeur (ou les valeurs, 1 dans ton exemple) la (ou les) plus petite(s) se trouvant au début du tableau.
Il te suffirait après ce tri de lire ton tableau dont le premier élément [0] est la plus petite des valeur, d'ajouter 1 à un compteur (les occurences), de lire ensuite l'élément suivant, de le cumuler s'il est égal, sinon de sortir de la boucle...
Si tu ne trouves pas comment faire ce tri n'hésite pas...
Cordialement,
Dan
Si tu triais ton tableau en utilisant sort de la classe Arrays ce serait un jeu d'enfant, la valeur (ou les valeurs, 1 dans ton exemple) la (ou les) plus petite(s) se trouvant au début du tableau.
Il te suffirait après ce tri de lire ton tableau dont le premier élément [0] est la plus petite des valeur, d'ajouter 1 à un compteur (les occurences), de lire ensuite l'élément suivant, de le cumuler s'il est égal, sinon de sortir de la boucle...
Si tu ne trouves pas comment faire ce tri n'hésite pas...
Cordialement,
Dan
Utilisateur anonyme
Modifié par danimo le 11/03/2011 à 02:53
Modifié par danimo le 11/03/2011 à 02:53
Salut,
Le sujet étant résolu, je te donne cet exemple qui permet, dans un premier temps de saisir puis de calculer la taille du tableau qui contiendra les valeurs saisies.
On suppose qu'on entre au moins une valeur et que si on entre plusieurs valeurs elles sont bien séparées par une virgule et pas de virgule après la dernière valeur.
Il faudrait aussi détecter le clique du bouton <Annuler>
Ensuite, le tableau étant créé, nous affichons son contenu puis procédons au tri du tableau que nous affichons trié (pour constater que c'est bien trié)
Enfin il reste à obtenir la valeur minimale ainsi que le nombre d'occurences de cette valeur minimale.
J'ai laissé vonlontairement de coté la possibilité d'utiliser split, ou StringTokenzer et choisi substring...
Voici le code;
Le seul println qui devrait rester est le dernier ci-dessus, les autres montrent seulement le déroulement du programme en fonction de ce qui a éte saisi...
Cordialement,
Dan
Le sujet étant résolu, je te donne cet exemple qui permet, dans un premier temps de saisir puis de calculer la taille du tableau qui contiendra les valeurs saisies.
On suppose qu'on entre au moins une valeur et que si on entre plusieurs valeurs elles sont bien séparées par une virgule et pas de virgule après la dernière valeur.
Il faudrait aussi détecter le clique du bouton <Annuler>
Ensuite, le tableau étant créé, nous affichons son contenu puis procédons au tri du tableau que nous affichons trié (pour constater que c'est bien trié)
Enfin il reste à obtenir la valeur minimale ainsi que le nombre d'occurences de cette valeur minimale.
J'ai laissé vonlontairement de coté la possibilité d'utiliser split, ou StringTokenzer et choisi substring...
Voici le code;
import java.util.Arrays; public class PlusPetiteValeurTableau { public static void main(String[] args) { String valSaisies = ""; valSaisies = (String)javax.swing.JOptionPane.showInputDialog (null, "Saisir les valeurs séparées par une virgule:", "SAISIE D'UNE CHAÎNE DE CARACTÈRES", javax.swing.JOptionPane.PLAIN_MESSAGE,null,null,null); int nbreVal = 0; String valSv = valSaisies; System.out.println("valSaisies: " + "\"" + valSaisies + "\""); int index = 0; do { index = valSaisies.indexOf(","); nbreVal++; valSaisies = valSaisies.substring(index + 1); // reste de la saisie } while(index >0); System.out.println("Nombre de valeurs = " + nbreVal); int leTableau[] = new int[nbreVal]; valSaisies = valSv; int i = 0; for(i = 0; i <nbreVal; i++) { index = valSaisies.indexOf(","); if(index >0) { leTableau[i] = Integer.parseInt(valSaisies.substring(0, index)); valSaisies = valSaisies.substring((index + 1)); System.out.println("Reste de valSaisies: " + "\"" + valSaisies); } } leTableau[i-1] = Integer.parseInt(valSaisies); //la dernère valeur n'étant pas suivie de ',' //et le i++ étant déjà fait System.out.println("\n\nLe tableau avant tri:"); for(i = 0; i <leTableau.length; i++) System.out.println(leTableau[i]); Arrays.sort(leTableau); //Tri du tableau en ordre croissant System.out.println("\n\nLe tableau suite au tri:"); for(i = 0; i <leTableau.length; i++) System.out.println(leTableau[i]); int occur = 0; int mini = 0; for(i = 0; i <leTableau.length; i++) { // la valeur mini est forcément l'élément zero if(i == 0) { mini = leTableau[i]; occur++; //incrémentation des occurence (il y en a au minimum une) } else if(leTableau[i] == mini) occur++; //incrémentation else break; } System.out.println("\nLa plus petite valeur " + mini + " existe " + occur + " fois dans le tableau."); } }
Le seul println qui devrait rester est le dernier ci-dessus, les autres montrent seulement le déroulement du programme en fonction de ce qui a éte saisi...
Cordialement,
Dan
arth
Messages postés
9374
Date d'inscription
mardi 27 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2016
1 291
8 mars 2011 à 07:53
8 mars 2011 à 07:53
J'aurais dit comme Stof, difficile de compter les occurrences si tu ne sais pas quel est le minimum du tableau avant de l'avoir définitivement trouvé.
Donc deux fonctions c'est mieux comme ça.
Donc deux fonctions c'est mieux comme ça.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
8 mars 2011 à 15:51
8 mars 2011 à 15:51
Cool pour vos réponses:
donc si j ai bien compris je récupere la variable minimum qui résulte de la méthode minimum, et grace a une autre méthode je reparcourt le tableau et je compte le nombre d'occurence que j ai.(en réalité je doit le faire pour le minimum et le maximum)
maintenant faut que je le mette en pratique et ca va pas etre du gateau.
merci bcps....
donc si j ai bien compris je récupere la variable minimum qui résulte de la méthode minimum, et grace a une autre méthode je reparcourt le tableau et je compte le nombre d'occurence que j ai.(en réalité je doit le faire pour le minimum et le maximum)
maintenant faut que je le mette en pratique et ca va pas etre du gateau.
merci bcps....
chico200987
Messages postés
791
Date d'inscription
mardi 6 avril 2004
Statut
Membre
Dernière intervention
30 juillet 2018
143
8 mars 2011 à 16:00
8 mars 2011 à 16:00
Essaie de pondre quelque chose, on essaiera de te guider point par point pour mieux que tu comprennes
Tu sais ce que tu as a faire, deux voire trois fonctions, une pour le minimum, une pour le maximum (sachant qu'une peut faire les deux avec un booleen par exemple..) et une derniere qui comptera l'occurence d'un chiffre quel qu'il soit..
Une fois le min/max trouve, tu appelles ta derniere fonction qui prend en parametre le nombre trouve et qui renvoit le nombre d'occurrences..
Tu sais ce que tu as a faire, deux voire trois fonctions, une pour le minimum, une pour le maximum (sachant qu'une peut faire les deux avec un booleen par exemple..) et une derniere qui comptera l'occurence d'un chiffre quel qu'il soit..
Une fois le min/max trouve, tu appelles ta derniere fonction qui prend en parametre le nombre trouve et qui renvoit le nombre d'occurrences..
Utilisateur anonyme
9 mars 2011 à 00:22
9 mars 2011 à 00:22
slt,
je bloque total sur les occurrences.
j ai bien compris ce que chico200987 a voulu m'expliquer, je cite:
Une fois le min/max trouve, tu appelles ta dernière fonction qui prend en paramètre le nombre trouve et qui renvoi le nombre d'occurrences..
Mais je voit pas du tout comment faire pour que le nombre pris en paramètre soit le maximum et le minimum.
de plus d'âpres les cours que j'ai je ne sait pas comment faire pour compter le nombre d'occurrence. du coup j ai un code plus qu'incorrect et qui en plus vu du pied que je suis parti, aurait besoin de deux méthodes occurrence (une pour le minimum une pour le maximum).
Voici le code pondu mais ce n'est pas du joli joli... tout est faux sur la fonction nombres d'occurrences (minimum)
voici mon code:
import javax.swing.*;
public class devoir1_4 {
public static void main(String[] args) {
int i, NbValeurs = Integer.parseInt (JOptionPane.showInputDialog (null,"Nombre de valeurs dans le tableau : "));
int[] Tableau = new int[NbValeurs];
for (i=0; i < NbValeurs; i++)
Tableau[i] = Integer.parseInt (JOptionPane.showInputDialog (null,"Saisir la valeur n°" + i + " : "));
int minimum;
int maximum;
int occurence;
// valeur minimale
minimum = MinimumTableau(Tableau, NbValeurs);
occurence = OccurenceTableau(Tableau, NbValeurs, minimum);
System.out.println("La valeur minimum est: " + minimum + " (" + occurence + " occurences)");
// valeur maximum
maximum = MaximumTableau(Tableau, NbValeurs);
System.out.println("La valeur maximum est: " + maximum);
}
// méthode minimum
static int MinimumTableau(int[] tab, int NbValeurs)
{
int minimum = tab[0];
for (int i=0 ; i<NbValeurs ; i++)
if (tab[i] < minimum) minimum = tab[i];
return minimum;
}
// méthode maximum
static int MaximumTableau(int[] tab, int NbValeurs)
{
int maximum = tab[0];
for (int i=0 ; i<NbValeurs ; i++)
if (tab[i] > maximum) maximum = tab[i];
return maximum;
}
// tentative de méthode nombre d'occurences minimum
static int OccurenceTableau(int[] tab, int NbValeurs, int minimum)
{
int occurence = tab[0];
for (int i=0 ; i<NbValeurs ; i++)
if (tab[i] == minimum) minimum = occurence++;
return occurence;
}
}
Si quelqu'un peut m'aiguiller sans faire le travail a ma place (que je comprenne bien le truc) cela serait sympa car je nage un peu et j ai beau relire mes cours mais pour ce dernier point je ne trouve absolument aucun indice.
merci d'avance....
je bloque total sur les occurrences.
j ai bien compris ce que chico200987 a voulu m'expliquer, je cite:
Une fois le min/max trouve, tu appelles ta dernière fonction qui prend en paramètre le nombre trouve et qui renvoi le nombre d'occurrences..
Mais je voit pas du tout comment faire pour que le nombre pris en paramètre soit le maximum et le minimum.
de plus d'âpres les cours que j'ai je ne sait pas comment faire pour compter le nombre d'occurrence. du coup j ai un code plus qu'incorrect et qui en plus vu du pied que je suis parti, aurait besoin de deux méthodes occurrence (une pour le minimum une pour le maximum).
Voici le code pondu mais ce n'est pas du joli joli... tout est faux sur la fonction nombres d'occurrences (minimum)
voici mon code:
import javax.swing.*;
public class devoir1_4 {
public static void main(String[] args) {
int i, NbValeurs = Integer.parseInt (JOptionPane.showInputDialog (null,"Nombre de valeurs dans le tableau : "));
int[] Tableau = new int[NbValeurs];
for (i=0; i < NbValeurs; i++)
Tableau[i] = Integer.parseInt (JOptionPane.showInputDialog (null,"Saisir la valeur n°" + i + " : "));
int minimum;
int maximum;
int occurence;
// valeur minimale
minimum = MinimumTableau(Tableau, NbValeurs);
occurence = OccurenceTableau(Tableau, NbValeurs, minimum);
System.out.println("La valeur minimum est: " + minimum + " (" + occurence + " occurences)");
// valeur maximum
maximum = MaximumTableau(Tableau, NbValeurs);
System.out.println("La valeur maximum est: " + maximum);
}
// méthode minimum
static int MinimumTableau(int[] tab, int NbValeurs)
{
int minimum = tab[0];
for (int i=0 ; i<NbValeurs ; i++)
if (tab[i] < minimum) minimum = tab[i];
return minimum;
}
// méthode maximum
static int MaximumTableau(int[] tab, int NbValeurs)
{
int maximum = tab[0];
for (int i=0 ; i<NbValeurs ; i++)
if (tab[i] > maximum) maximum = tab[i];
return maximum;
}
// tentative de méthode nombre d'occurences minimum
static int OccurenceTableau(int[] tab, int NbValeurs, int minimum)
{
int occurence = tab[0];
for (int i=0 ; i<NbValeurs ; i++)
if (tab[i] == minimum) minimum = occurence++;
return occurence;
}
}
Si quelqu'un peut m'aiguiller sans faire le travail a ma place (que je comprenne bien le truc) cela serait sympa car je nage un peu et j ai beau relire mes cours mais pour ce dernier point je ne trouve absolument aucun indice.
merci d'avance....
chico200987
Messages postés
791
Date d'inscription
mardi 6 avril 2004
Statut
Membre
Dernière intervention
30 juillet 2018
143
9 mars 2011 à 00:50
9 mars 2011 à 00:50
Alors c'est pas pour le plaisir de te contredire, mais je dirais que tout est (presque) juste !
Je ne decele qu'une seule erreur (grossiere certes..).
Effectivement ton nombre d'occurences qui ne va pas. Reprenons la definition d'une occurence, c'est le nombre de fois qu'une valeur apparait dans ton tableau. C'est donc un compteur, et qui dit compteur, dit initialisation a ... ?
Tu peux reutiliser la meme fonction OccurenceTableau telle quelle ensuite sans rien changer, il faudrait juste changer le nom "minimum" en un nom generique jor "valeur" pour la semantique..
Et tu peux ensuite reutiliser la variable occurence pour calculer le nombre d'occurences pour le nombre max ou alors en creer deux distinctes type occurenceMin et occurenceMax (dans ton main j'entends non pas dans ta fonction OccurenceTableau)
Tu vois le bout du tunnel tu n'es vraiment pas loin ;)
Je ne decele qu'une seule erreur (grossiere certes..).
Effectivement ton nombre d'occurences qui ne va pas. Reprenons la definition d'une occurence, c'est le nombre de fois qu'une valeur apparait dans ton tableau. C'est donc un compteur, et qui dit compteur, dit initialisation a ... ?
Tu peux reutiliser la meme fonction OccurenceTableau telle quelle ensuite sans rien changer, il faudrait juste changer le nom "minimum" en un nom generique jor "valeur" pour la semantique..
Et tu peux ensuite reutiliser la variable occurence pour calculer le nombre d'occurences pour le nombre max ou alors en creer deux distinctes type occurenceMin et occurenceMax (dans ton main j'entends non pas dans ta fonction OccurenceTableau)
Tu vois le bout du tunnel tu n'es vraiment pas loin ;)
chico200987
Messages postés
791
Date d'inscription
mardi 6 avril 2004
Statut
Membre
Dernière intervention
30 juillet 2018
143
9 mars 2011 à 01:43
9 mars 2011 à 01:43
Derien :)
9 mars 2011 à 07:12
9 mars 2011 à 08:03
9 mars 2011 à 08:13
Cordialement,
Dan
9 mars 2011 à 18:18
a chico200987 , bien que encore un probleme que je cite:
nom generique "valeur" pour la semantique.
je vais revoir tout ca se soir en tout cas ca marche, et je posterais mon code si ca peut aider quelqu'un ou si je peut encore paufiner quelques truc. (et je mettrais le post en résolut)
merci pour vos propositions j'y refléchit ca fait juste deux semaines que j'ai commencé a apprendre java (jviens plutot du php) et ca me permet d'élargir mes connaissances.
10 mars 2011 à 11:59
C'est pas du tout une erreur, mais plus un problème de sémantique c'est a dire de sens, valeur passerait mieux puisque c'est une valeur que tu passes en paramètre ;)