begin process at 2010 02 09 21:35:35
  Trouver un code source :
 
dans
 
Accueil > Forum > 

JAVA / J2EE / J2ME

 > 

Divers

 > 

Général

 > 

Problème tableau


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème tableau

vendredi 5 décembre 2008 à 18:03:27 | Problème tableau

antara3d

Bonjour à tous

Merci de bien vouloir m'aider

Le travail à faire consiste à concevoir deux méethodes à ajouter dans la classe TransTab dont le code
source est listé ci-dessous

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class TransTab {
static String[] codeIdItemTab;
static int[] qItemTab;
static double[] prixItemTab;
static int[] codeTaxTab;
static void remplirTab(String nomFichier, int nombreTrans)throws FileNotFoundException{
Scanner lectureFichier = new Scanner (new File(nomFichier));
codeIdItemTab=new String[nombreTrans];
qItemTab=new int[nombreTrans];
prixItemTab=new double[nombreTrans];
codeTaxTab= new int[nombreTrans];
for (int i=0; i< nombreTrans && lectureFichier.hasNext(); i++){
codeIdItemTab[i]=lectureFichier.next();
qItemTab[i]=lectureFichier.nextInt();
prixItemTab[i]=lectureFichier.nextDouble();
codeTaxTab[i]= lectureFichier.nextInt();
}
}
}

La méthode remplirTab() ci-dessus a deux paramètres nomFichier et nombreTrans. nomFichier
représente le nom d'un chier stockant les transactions une par ligne alors que nombreTrans est le nombre
de transactions dans ce fichier.

(1) Ajoutez a la classe TransTab une methode dont la signature est :
public static int[] selectQMinQmax(int qMin, int qMax, double prixSeuil);
et qui retourne un tableau d'entiers compose des numeros des cases des items dont la transaction
comporte une quantité supérieure ou égale a qMin et inférieure ou égale a qMax et dont le prix hors
taxe est supérieur ou égal a prixSeuil. Nous allons supposer que -1 indique la n des éléments a
considérer dans le tableau retourne.

(2) Ajoutez a la classe TransTab une methode dont la signature est :
public static String[] listeItemIdCodeSansRedondance();
et qui retourne un tableau de String compose des codes alphanumériques identifiants les items
sans redondance. Lorsqu'un item fait l'objet de plusieurs transactions, son code identifiant doit
apparaître une seul fois dans le tableau retourne. En terme de traitement cela signifie qu'il faudrait
vérifier qu'un code identifiant d'un item n'existe pas dans encore dans le tableau ;a retourner avant
de l'y ajouter. Nous allons supposer que le String "FIN" indique la n des éléments à considérer
dans le tableau retourne. Bien sure on suppose aussi qu'il n'y a aucun item ayant "FIN" comme
code identifiant.

A n de concrétiser le problème, je vous donne l'exemple du chier ListeTrans.TXT suivant:
AAA442945 88 4,83 3
X930275108 1 8,07 3
C105C85923 49 9,82 1
X930275108 37 5,3 0
AAA442945 45 9,61 1
X733635456 66 2,88 3
AAA442945 29 0,61 2
Y28522548 80 7,13 2
Y217997564 18 9,34 2
AAA442945 95 9,79 2
13GG492810 26 1,65 1
JK67484 28 4,8 1
Soit un programme pour tester les méthodes demandées:
import java.io.FileNotFoundException;
public class TestTransTab {
public static void main(String[] args) throws FileNotFoundException{
TransTab.remplirTab("ListeTrans.TXT", 12);
int[] tabEntiers= TransTab.selectQMinQmax(45, 80, 7.0);
System.out.println("Liste des numéros des cases pour les critères demandes");
int i=0;
for(i=0; tabEntiers [i] != -1 && i < tabEntiers.length; i++){
System.out.print(tabEntiers [i] + " ");
}
System.out.println(tabEntiers [i]);
System.out.println("Liste des codes identifiants :");
String[] tabStr= TransTab.listeItemIdCodeSansRedondance();
for(i=0; tabStr[i].compareTo("FIN") != 0 && i < tabStr.length; i++){
System.out.print(tabStr[i] + " ");
}
System.out.println(tabStr [i]);
}
}
Voila ce que ce programme de test est suppose afficher :
Liste des numéros des cases pour les critères demandes :
2 4 7 -1
Liste des codes identifiants
AAA442945 X930275108 C105C85923 JK67484 Y28522548 Y217997564 13GG492810 FIN

Donc voici ce que j'ai fait

import java.io.File;
import java.io.FileNotFoundException;
import java.util.*;

public class TransTab {

    static String[] codeIdItemTab;
    static int[] qItemTab;
    static double[] prixItemTab;
    static int[] codeTaxTab;
   
    static void remplirTab(String nomFichier, int nombreTrans)throws FileNotFoundException{
        Scanner lectureFichier = new Scanner (new File(nomFichier));
        codeIdItemTab=new String[nombreTrans];
        qItemTab=new int[nombreTrans];
        prixItemTab=new double[nombreTrans];
        codeTaxTab= new int[nombreTrans];
        for (int i=0; i< nombreTrans && lectureFichier.hasNext(); i++){
            codeIdItemTab[i]=lectureFichier.next();
            qItemTab[i]=lectureFichier.nextInt();
            prixItemTab[i]=lectureFichier.nextDouble();
            codeTaxTab[i]= lectureFichier.nextInt();
        }
    }
      
    public static int[] selectQMinQmax(int qMin, int qMax, double prixSeuil){
        int[] tab2;
        tab2= new int [qItemTab.length];
        for (int i=0; i<qItemTab.length; i++){
            if (qItemTab[i] >=qMin && qItemTab[i]<=qMax && prixItemTab[i]>=prixSeuil){
                for (i=0; i<tab2.length; i++){
                    tab2[i]=qItemTab[i];
                }
                tab2[tab2.length+1] = -1;
        }
       }
       return tab2;
    }
    public static String[] listeItemIdCodeSansRedondance(){
        String[] tab1;
        tab1= new String[codeIdItemTab.length];
        for (int i=0; i<tab1.length; i++){
            if (codeIdItemTab[i].compareTo(codeIdItemTab[i++]) == 0)
            tab1[i]=codeIdItemTab[i];
        }
        tab1[tab1.length+1]= "FIN";
        return tab1;
    }
}

Mes deux problèmes; 1- je n'arrive pas a donner le numéro de la case 2- et j'arrive toujours out of bounds dans mes tableaux

Un énorme merci de votre aide


vendredi 5 décembre 2008 à 20:23:19 | Re : Problème tableau

lafolle24320

Petite question ... pourquoi n'utilise pas une ArrayList<String> ?? cela simplifirai la gestion de ton tableau. Et tu pourrais le parcourir avec un itérateur simplifié :

ArrayList<String> list = new ArrayList<String>;
for(String s : list)
{
     sysout(s); //affiche le string
}

Je pense qu'avec çà tu évitera de sortir de ton tableau déjà

Bon courage

Lafolle
vendredi 5 décembre 2008 à 20:40:41 | Re : Problème tableau

antara3d

Maintenant mon selectQMinQmax fonctionne avec cela

public static int[] selectQMinQmax(int qMin, int qMax, double prixSeuil){
        int[] tab1;
        tab1= new int [qItemTab.length];
        int z=0;
        for (int i=0; i<qItemTab.length && i < prixItemTab.length; i++){
            if (qItemTab[i] >=qMin && qItemTab[i]<=qMax && prixItemTab[i]>=prixSeuil){
            tab1[z]=i;
            z++;
        }
        tab1[z+1] = -1;
       }
       return tab1;
    }

Mais mon listeItemIdCodeSansRedondance ne fonctionne toujours pas. Dans le test il me donne NullPointerException: null

public static String[] listeItemIdCodeSansRedondance(){
        String[] tab2;
        tab2= new String[codeIdItemTab.length];
        int w=0;
        for (int i=0; i<codeIdItemTab.length; i++){
            if (codeIdItemTab[i].compareTo(codeIdItemTab[i++] <0))
            tab2[i]=codeIdItemTab[i];
            w++;
        }
        tab2[w+1]= "FIN";
        return tab2;
    }
}

Encore Merci de bien vouloir m'aider
samedi 6 décembre 2008 à 13:59:32 | Re : Problème tableau

antara3d

J'ai réglé mon problème

Merci de votre aide

Pour les curieux voici la solution

import java.io.File;
import java.io.FileNotFoundException;
import java.util.*;

public class TransTab {

    static String[] codeIdItemTab;
    static int[] qItemTab;
    static double[] prixItemTab;
    static int[] codeTaxTab;
   
    static void remplirTab(String nomFichier, int nombreTrans)throws FileNotFoundException{
        Scanner lectureFichier = new Scanner (new File(nomFichier));
        codeIdItemTab=new String[nombreTrans];
        qItemTab=new int[nombreTrans];
        prixItemTab=new double[nombreTrans];
        codeTaxTab= new int[nombreTrans];
        for (int i=0; i< nombreTrans && lectureFichier.hasNext(); i++){
            codeIdItemTab[i]=lectureFichier.next();
            qItemTab[i]=lectureFichier.nextInt();
            prixItemTab[i]=lectureFichier.nextDouble();
            codeTaxTab[i]= lectureFichier.nextInt();
        }
    }
      
    public static int[] selectQMinQmax(int qMin, int qMax, double prixSeuil){
        int[] tab1;
        tab1= new int [qItemTab.length];//Déclaration d'un tableau
        int z=0;//Variable qui me sert de compteur
        for (int i=0; i<qItemTab.length && i < prixItemTab.length; i++){//Ouverture boucle for
            if (qItemTab[i] >=qMin && qItemTab[i]<=qMax && prixItemTab[i]>=prixSeuil){//Ouverture du if
            tab1[z]=i;//La case Z correspond au numéro de la case i du test approuvé
            z++;
        }//Fermeture du if
        tab1[z+1] = -1;//Ajout de -1 à la fin de la liste pour marquer la fin de celle-ci
       }//Fermeture du for
       return tab1;//retourne le tableau 1
    }// Fin de la méthode selectQMinQmax
   
    public static String[] listeItemIdCodeSansRedondance(){
        String[] tab2;
        tab2= new String[codeIdItemTab.length];//Déclaration d'un tableau
        int w=0;//Variable qui me sert de compteur
        for (int i=0; i<codeIdItemTab.length; i++){//ouverture boucle for #1
            boolean exam = false;// examen boolean initialisé a false
            for (int s=0;s<w;s++){//ouverture boucle for #2
                if (codeIdItemTab[i].compareTo(tab2[s])==0){//Ouverture du if #1
                    exam=true;// Si le if est retourne true cela veut dire qu'il est redondant il sera mis de côté
            }//Fermeture du if #1
        }//Fermeture de la boucle for #2
            if (exam==false){//Si exam correspond a faux, donc il n'est pas redondant
            tab2[w]=codeIdItemTab[i];//Le contenu de la case non redondante sera stocké dans le tab2
            w++;//Compteur
        }//Fermeture du if #2
    }//Fermeture de la boucle for #1
        tab2[w]= "FIN";//Ajout de "FIN" à la fin de la liste pour marquer la fin de celle-ci
        return tab2;//retourne le tableau 2
    }// Fin de la méthode listeItemIdCodeSansRedondance
}// Fin de la classe TransTab


Cette discussion est classée dans : int, string, static, nombretrans, qitemtab


Répondre à ce message

Sujets en rapport avec ce message

HELP HELP HELP !!!!!!!! [ par poupoule00 ] Boonjour et merci d'avance de me repondre. J'ai un projet a faire en jCreator qui consiste a entrer une date(jourdelasemaine, numero du jour, mois, an Question de philosophie "héritages" [ par omcougar ] Bonjour, Je m'amuse en ce moment sur les transferts de données... Pour définir la tête des mes trames j'ai créé une classe statique TrameData que enco problème d'éxucution [ par Brigadiste ] slt,SVP, j'ai un problème, de mettre une List dans un Vector pour le traiter de suitNB: le code est de découper un fichier texte, le mettre sur google probleme d'afichage JTextArea [ par id000 ] Salut a tous;je voudrer affiche un tableau de string dans un jtextareacode :........................public void Affichage(){ for(int i=0 ; ijt2.setTex java.lang.NullPointerException [ par bolgot ] Bonjour, j'ai un problème au niveau de mon code j'ai comme erreur java.lang.NullPointerException au niveau de la ligne :String   nbAcc=(String) nbAccJ non-static variable Dialysis1 cannot be referenced from a static context [ par shadowmic ] Voilà bonjours tout le monde je m'excuse de poser une question aussi con mais je suis un débutant en java.erreur : non-static variable Dialysis1 canno Probleme addition dans un tableau [ par beberto56 ] Bonjour,j'ai instancié un tableau en java dans l'API swing Netbeans, et je voudrais totaliser dans la 4ième colonnes les sommes présentes dans les tro mon ticker ne marche pas [ par bessamira ] Bonjour a tout le monde,j'ai fait une applet java d'un ticker j'ecrit le code mais toujours ne marche plus,je travaille sous eclipse,mon code est le s Crypté les informations de la base de données [ par Noizet ] Hello,J'aimerai savoir de quel manière je peux crypté mes données sur la base de données ?Pour le moment elles sont en claire de cette façon de mon co Mise à jour réussie sauf sur le dernier tuple [ par Frederick_Etudiant ] Bonjour,En effectuant une mise à jour dans une table. Je me retrouve devant un fait vraiment étrange.En lançant l'algorithme, les mises à jour des tup


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,421 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales