IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Besoin d'aide, svp


Sujet :

avec Java

  1. #1
    Candidat au Club
    Femme Profil pro
    Testeur informatique
    Inscrit en
    Avril 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Testeur informatique

    Informations forums :
    Inscription : Avril 2019
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Besoin d'aide, svp
    Bonjour,
    Je débute à apprendre le Java.
    J'ai écrit un petit programme pour faire un tri des valeurs aléatoires dont le nombre est défini par l'utilisateur. Mais ça ne marche pas.
    Pourriez-vous m'aider à trouver le problème, svp?
    Merci d'avance.
    Voici le programme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    import java.util.Arrays;
    import java.util.Random;
    import java.util.Scanner;
     
    public class TriChiffres {
     
    	public static void main(String[] args) {
     
    		@SuppressWarnings("resource")
    		Scanner sc = new Scanner (System.in);
    		System.out.println("Entrez le nombre de valeurs que vous voulez trier.");
    		int n = sc.nextInt();
    		int []tab = new int[n];
     
    		int a = 0;
    		for (a =0; a<tab.length; a++) {
    			Random random = new Random();	
    			tab[a] = random.nextInt();
    		}	
     
    		while (tab[a]>tab[a+1]) {
    			int temp = tab[a];
    			tab[a] = tab[a+1];
    			tab[a+1] = temp;	
    			a++;
    		}
    		String representationDuTab = Arrays.toString(tab);
    		System.out.println(representationDuTab);
    	}
    }

  2. #2
    Membre expérimenté Avatar de Cincinnatus
    Homme Profil pro
    Développeur d'applications métier
    Inscrit en
    Mars 2007
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur d'applications métier
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2007
    Messages : 592
    Points : 1 679
    Points
    1 679
    Par défaut
    Il y a deux possibilités pour comprendre pourquoi un programme ne fait pas ce qu'on pense lui demander :
    - revoir l'algorithme et comparer avec le code
    - afficher les valeurs intermédiaires (logs, print, ...)

    Là, si tu affiche la valeur de a entre les boucles for et while, tu devrais voir que le while ne redémarre pas avec a égal à 0, mais plutôt avec a valant la taille du tableau. Il faudrait le réinitialiser entre les boucles.

  3. #3
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    voilà un exemple parfait d'illustration du pourquoi de la boucle "for"
    pourquoi une boucle dans laquelle on déclare une variable ?: for( int index=0; index < max; index++)
    N. Wirth et autres auteurs avaient fait remarquer que d'avoir un compteur qui a une vie en dehors d'une boucle conduit à des erreurs!
    J'ai des principes: je peux toujours trouver une bonne raison pour les contredire .... mais j'ai des principes!
    (mon excellent bouquin sur Java : https://eska-publishing.com/fr/livre...822407076.html)

  4. #4
    Candidat au Club
    Femme Profil pro
    Testeur informatique
    Inscrit en
    Avril 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Testeur informatique

    Informations forums :
    Inscription : Avril 2019
    Messages : 2
    Points : 3
    Points
    3
    Par défaut solution trouvée
    Merci beaucoup de votre aide.
    J'ai finalement fait comme suivant:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    	import java.util.Arrays;
    	import java.util.Random;
    	import java.util.Scanner;
     
    	public class TriNombre {
     
    		public static void main(String[] args) {
     
    			Scanner sc = new Scanner(System.in);
    			System.out.println("Entrez le nombre de valeurs que vous voulez trier.");
    			int n = sc.nextInt();
    			int[] tab = new int[n];
    			int a = 0;
     
    			for (a = 0; a < tab.length; a++) {
    				Random random = new Random();
    				tab[a] = random.nextInt();	
    			}
     
    			String representationDuTab = Arrays.toString(tab);
    			System.out.println(representationDuTab);
     
    			int b = n;
    			int c;
    			int min;
     
    			for (int i = 0; i < b - 1; i++) {
    				min = i;
    				for (c = i + 1; c < b; c++) {
    					if (tab[c] < tab[min])
    						min = c;
    				}
    				if (min != i) {
    					int temp = tab[min];
    					tab[min] = tab[i];
    					tab[i] = temp;
    				}
    			}
    			for (c = 0; c < b; c++) {
    				System.out.print(tab[c] + " ");
    			}
    			sc.close();
    		}
    	}

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/04/2007, 08h50
  2. Encapsulation, besoin d'aide svp
    Par 3xplo dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 09/02/2007, 15h52
  3. besoin d'aide SVP
    Par geulmim dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 03/04/2006, 11h01
  4. Réponses: 5
    Dernier message: 22/01/2006, 00h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo