Partage
  • Partager sur Facebook
  • Partager sur Twitter

Aide dans Tableau en Java

Sujet résolu
    26 mai 2009 à 19:40:50

    Bonjour à tous...Je suis entrain de faire un exercice que voici..desolé mais l'exercice est en anglais :
    Use a one-dimensional array to solve the following problem: Write an application that inputs five numbers, each of which is between 10 and 100, inclusive. As each number is read, display it only if it is not a duplicate of a number already read. Provide for the "worst case," in which all five numbers are different. Use the smallest possible array to solve this problem. Display the complete set of unique values input after the user inputs each new value.

    Le principe est juste de faire entrer des valeurs (5)comprises entre 10 et 100. Si il n'ya pas de valeurs dupliquées dans le tableau afficher les 5 nombres differentes. Voici le code que j'ai fait. Le problème se trouve au niveau de l'affichage des nombres parce que quand il ya une repetition de valeur , le tableau affiche seulement les nombres avant la repetition.
    import java.util.*;
    import java.io.*;
    
    public class Tutorial8_2 {
            
        public static void main(String[] args) {
          
          int ArrayNumb[]=new int [5];
    
          int i,j,numbers;
          boolean flag =false;
          boolean containsnumbers=false;
          int store=0;
          
    	 	Scanner keyboard = new Scanner(System.in);
    	 	
    for (i=0;i<5;i++)
    {
          	System.out.print("Enter number "+(i+1)+" : ");
    		numbers=keyboard.nextInt();
    		
    		if (numbers>=10 && numbers<=100)
    		{
    			
    			for (j=0;j<=i;j++)
    			{
    				if (numbers==ArrayNumb[j])
    				{	
    					System.out.println("numbers already entered ");
    					containsnumbers=true;
    					j--;
    				}
    				
    			}
    				
    				if (containsnumbers!=true)
    				{
    					ArrayNumb[i]=numbers;
    					store=i;
    				
      				}
      							
    		}else
    				{
    						System.out.println("numbers should be within 10 nd 100 ");
    						i--;
    				}						
    		}
    		
    		for(i=0;i<=store;i++)
    			{
    				System.out.print(ArrayNumb[i]+" ");
    			}
    }
    
    }
    
    • Partager sur Facebook
    • Partager sur Twitter
      26 mai 2009 à 20:08:37

      Avant tout, une petite remarque :
      int ArrayNumb[]=new int [5];
      

      On ne met pas de majuscule à la première lettre d'un nom de variable.

      Ensuite, sans rien changer de la logique de ton code, voici quelque simplification :
      import java.util.*;
      import java.io.*;
      
      public class Tutorial8_2 {
              
          public static void main(String[] args) {
            
            int arrayNums[]=new int [5]; // pas de majuscule au nom de variable
      
            // int i,j,numbers; inutile de déclarer ici
            // boolean flag =false; Inutile
            // boolean containsnumbers=false; inutile
            // int store=0; Inutile
            
      	 	Scanner keyboard = new Scanner(System.in);
      	 	
      for (int i=0;i<5;i++) // Mauvais choix de boucle, mais passons
      {
            	System.out.print("Enter number "+(i+1)+" : ");
      		arrayNums[i]=keyboard.nextInt(); // Et les exceptions si l'on ne rentre pas un int ?
      		if (arrayNums[i]>=10 && arrayNums[i]<=100)
      		{
      			for (int j=0;j<i;j++)
      			{
      				if (arrayNums[i]==arrayNums[j])
      				{	
      					System.out.println("number already entered ");
      					i--; // Pour reboucler sur la même valeur
      					break; // Sortie automatique de la boucle
      					// containsnumbers=true; inutile maintenant
      					// j--; Ca sert à quoi (Ah en fait tu voulais mettre i-- pour reboucler sur la même valeur => La était ton erreur)
      				}
      				
      			}
      				
      				/*if (containsnumbers!=true)
      				{
      					ArrayNumb[i]=numbers;
      					//store=i; Ca servait à quoi
      				
        				} Devenu inutile */
        							
      		}else
      				{
      						System.out.println("numbers should be within 10 nd 100 ");
      						i--;
      				}						
      		}
      		
      		for(i=0;i<=5;i++)
      			{
      				System.out.print(ArrayNumb[i]+" ");
      			}
      }
      
      }
      
      • Partager sur Facebook
      • Partager sur Twitter
        26 mai 2009 à 20:15:51

        je rajouterai que tu dois incrémenté ta variable store
        (ou tu peux directement supprimer cette variable et mettre 5 dans la boucle finale). Sinon, tu n'affichera aucun nombre ;)
        • Partager sur Facebook
        • Partager sur Twitter
          26 mai 2009 à 20:33:27

          Tout d'abord merci pour les remarque....J'ai essayé de modifier mon code avec le tien mais il y a un problème dès que tu entre la premiere valeur il y a une erreur qui se produit...(erreur du nombre dejà entré)....Merci de bien vouloir le tester chez toi aussi..
          • Partager sur Facebook
          • Partager sur Twitter
            26 mai 2009 à 21:00:32

            T'aurais pu le remarqué, j'ai oublier de changer le nom pour ArrayNumb[j]. Le remplacer par arrayNums[j] (j'ai édité).

            PS : Tu n'utilises pas un IDE ? Il t'aurait détecter automatiquement.

            EDIT : Il y a d'autre erreur dans le parcours pour l'affichage, je corrige de suite.
            • Partager sur Facebook
            • Partager sur Twitter
              26 mai 2009 à 21:17:44

              Au fait je l'ai remarqué...et je l'ai changé aussi mais cela me donnait toujours la meme chose...Mais après avoir fait du copie coller sur ton code...tout marche à merveille merci bien...Et vive Les Zeros.
              • Partager sur Facebook
              • Partager sur Twitter
                26 mai 2009 à 21:23:51

                Voici une version plus compressé du code (j'utilise les ArrayList) Du fait que j'utilise une liste, et donc des Integer, je ne suis pas sûr du tout (pour pas dire que je suis presque sûr du contraire) que ce soit plus rapide. Mais au moins, ça évite d'écrire trop :D .

                public static void main(String[] args) {
                        List<Integer> numbers = new ArrayList<Integer>(5);
                	 	Scanner keyboard = new Scanner(System.in);
                
                        for(int i=0;i<5;i++) {
                            System.out.print("Enter number "+(i+1)+" : ");
                            Integer value = keyboard.nextInt();
                            if (value <= 10 || value >= 100) {
                                System.out.println("numbers should be within 10 nd 100 ");
                                i--;
                            } else if(numbers.contains(value)){
                                System.out.println("number already entered ");
                                i--;
                            } else {
                                numbers.add(value);
                            }
                        }
                        System.out.println(numbers);
                


                PS : Au fait, as-tu compris les modifications qui ont été faites ? parce que le C/C, ça ne sert à rien.
                • Partager sur Facebook
                • Partager sur Twitter

                Aide dans Tableau en Java

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown