begin process at 2012 02 15 19:51:02
  Trouver un code source :
 
dans
 
Accueil > Forum > 

JAVA / J2EE / J2ME

 > 

Divers

 > 

Débutant(e)

 > 

Exception java.lang erreur


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

Exception java.lang erreur

vendredi 27 août 2010 à 15:17:22 | Exception java.lang erreur

orchideor

Bonjour tout le monde ,

J'ai une exception java.lang.arrayIndexOutOfBoundsException lors de l'execution de mon programme.

J'ai essayer de modifier la condition selon le nombre d'élements que j'ai dans mon vecteur mais rien n'y fait.

Voilà la partie du code qui est concernée.
Vector week=new Vector();
while (rs.next())
{week.add(rs.getString(2);
}
for (int v=0;v<week.size());v++)
{
if (float.parsefloat(week.elementAt(v).toString()==floatparsefloat(week.elementAt(v+1).toString())
S+=S+Float.parsefloat(week.elementAt(v).toString());

else if (float.parsefloat(week.elementAt(v).toString()!=floatparsefloat(week.elementAt(v+1).toString())
{Sum[j]=S;
j++;
}
}
for(int i=0;i<j;i++)
{System.out.println(+Sum[i]);

Merci pour toute réponse^^.
}
vendredi 27 août 2010 à 17:51:14 | Re : Exception java.lang erreur

HFanny

Salut,

A priori si la boucle "for" va de 0 à la taille de week.size(), lors du dernier passage dans cette boucle, le week.elementAt(v+1) ne pourra pas exister, d'où l'exception lancée.

Par ailleurs, ya t il une raison particulière pour utiliser un Vector (qui n'est en général plus utilisé maintenant) ?

Fanny
vendredi 27 août 2010 à 19:26:28 | Re : Exception java.lang erreur

orchideor

Salut,
j'ai utilisé les vecteurs pour stocker des données VARCHAR que j'ai récupéré de la base de donnée.Je dois faire un traitement sur deux colonnes selon la valeur d'une colonne "week".Si c'est le même week, je fais la sommation des valeurs de l'autre colonne.C'est pour ca que je fais la condition if if(Float.parseFloat(week.elementAt(v).toString())==Float.parseFloat(week.elementAt(v+1).toString()))

Je doutais que le dernier indice ne soit pas reconnu,mais je n'ai pas trouver une solution!!

voilà le code tout entier

public static void main(String[] args) {
// TODO Auto-generated method stub
Vector tabLignes=new Vector();
Vector nomCols = new Vector();
Vector week = new Vector();
float Sum[]=new float[100];
int j=0;

{ try { Class.forName ("oracle.jdbc.driver.OracleDriver");
System.out.println("Driver Loaded");
Connection con=DriverManager.getConnection ("jdbc:oracle:thin:@localhost:1521:xe","SYSTEM","infohouda");
System.out.println("Driver Connected");
Statement st=con.createStatement();
//ResultSet rs=st.executeQuery("select * from KPI_NSN");
ResultSet rs=st.executeQuery("select n.TCONG_D,n.WEEK from KPI_NSN1 n order by n.WEEK");

while(rs.next()) {
//System.out.println(rs.getString(1));
nomCols.add(rs.getString(1));
week.add(rs.getString(2));

}
for (int v=0;v<=week.size();v++)
{
System.out.println(nomCols.elementAt(v).toString());

if(Float.parseFloat(week.elementAt(v).toString())==Float.parseFloat(week.elementAt(v+1).toString()))
{
S=S+Float.parseFloat(nomCols.elementAt(v).toString());
System.out.println(Float.parseFloat(nomCols.elementAt(v).toString()));
}
else if(Float.parseFloat(week.elementAt(v).toString())!=Float.parseFloat(week.elementAt(v).toString()))
{Sum[j]=S;
System.out.println(+Sum[j]);
j++;
}
}
for (int i=0;i<j;i++)
{
System.out.println("la somme des num est "+Sum[1]);
}
st.close();
con.close(); }
catch(Exception e) {
System.out.println(e);
} finally {
System.out.println("it's finally block executed");
}
}
}

Encore Merci .
vendredi 27 août 2010 à 20:37:30 | Re : Exception java.lang erreur

HFanny

Réponse acceptée !
Pourquoi ne pas faire directement la somme dans la requête SQL en utilisant SUM sur TCONG_D avec un group by sur le champ WEEK ?
Si c'est juste pour récupérer la somme, il n'y a pas forcément besoin de passer par une boucle en java si tu ne réutilises pas les données dans la suite du programme.

Sinon, si tu veux garder la requête SQL de cette façon, passer par une Map qui aurait comme clé la semaine (WEEK), et en valeur la somme devrait résoudre ton problème.

En gros ça pourrait donner quelque chose du style:
Code Java :
Map <String, Float> mapWeek = new HashMap<String, Float>();
while(rs.next()) {
	String num = rs.getString(1);
	String week = rs.getString(2);
	Float value = Float.parseFloat(num);
	if (mapWeek.containsKey(week)) {
		value += mapWeek.get(week());
	}
	mapWeek.put(week, value);
}
for (Entry<String, Float> e : mapWeek.entrySet()) {
	System.out.println(e.getKey() + ": " + e.getValue());
}



Autres choses :
- Il semble que tu n'utilises pas "tabLignes", enlève de ton code tout ce qui est inutilisé, ça encombre le code et ne permet pas une bonne visibilité.
- Tu peux garder ton code précédent (en ajoutant un "if" sur la valeur de v et de la taille du tableau), mais en préférablement en remplaçant Vector par ArrayList (par exemple), l'usage de Vector est de moins en moins répandu.

Fanny
vendredi 27 août 2010 à 21:06:07 | Re : Exception java.lang erreur

orchideor

Merci Beaucoup Funny,

Je suis débutante c'est pour cela ^^,juste une question pour la partie
if (mapWeek.containsKey(week)) {
value += mapWeek.get(week());
}
mapWeek.put(week, value);

j'ai pas très bien compris le rôle de mapweek!est ce que value représente la somme de TCONG_D selon les week?

Merci encore.
vendredi 27 août 2010 à 21:24:09 | Re : Exception java.lang erreur

HFanny

Réponse acceptée !

mapWeek est un objet de type "Map" (plus précisément HashMap dans ce cas).
C'est à dire que ça fonctionne par clé/valeur.

Dans la mesure où tu veux condenser les valeurs de n.TCONG_D pour chaque n.WEEK, une Map te permet d'avoir la semaine en tant que clé, et pour chacune de ses clés, d'y attribuer une valeur. La valeur change donc pour chaque itération de ta boucle sur le resultset.

Imagine que tu aies dans ton resultset les valeurs suivantes :
Semaine 1 | 5
Semaine 2 | 4.1
Semaine 1 | 2.2
Semaine 3 | 2.6
Semaine 2 | 3

Le premier passage de la boucle va vérifier si la Map contient déjà la clé "Semaine 1", ce n'est pas le cas, donc on insère dans la Map une nouvelle paire clé/valeur équivalent à clé : "Semaine 1" et valeur : 5

Second passage de la boucle, la clé "Semaine 2" n'existe pas encore dans la Map, donc même chose, on insère une nouvelle paire clé/valeur : "Semaine 2" -> 4.1

Troisième passage, la clé "Semaine 1" existe dans la Map, donc on fait la somme de la valeur du resultset avec 5 (valeur actuelle pour la clé "Semaine 1"), et ensuite même chose, on met à jour la Map avec "Semaine 1" -> 7.2

Et ainsi de suite.

Donc oui, la value représente la somme selon les week.

La méthode .put() d'une Map ajoute la paire clé/valeur si la clé n'existe pas, sinon elle remplace la clé existante.

Fanny
vendredi 27 août 2010 à 23:04:03 | Re : Exception java.lang erreur

orchideor

J'ai très bien compris la chose, c'est plus facile , il fait le traitement donc seul selon la clé définit!

une dernière chose Fanny , pour la partie
Code Java :
for (Entry <String, Float> e : mapWeek.entrySet()) {
		 	System.out.println(e.getKey() + ": " + e.getValue());
		 }

J'ai cherché un peu sur le net , j'ai trouvé que ça concerne la conversion,en essayant de le faire j'ai eu une erreur :

Entry <String, Float> e : mapWeek.entrySet() type mismatch can not convert from element type Map.entry <String,Float> to indexEvents.entry.

Merci Fanny.
vendredi 27 août 2010 à 23:13:33 | Re : Exception java.lang erreur

HFanny

Réponse acceptée !
Lorsque tu as ce genre d'erreur, il faut regarder ce que la méthode retourne.
En l'occurence, entrySet() de l'objet Map retourne un objet de type java.util.Map.Entry.

Soit bien sûre que ce soit cet objet que tu aies dans les imports (et non pas un objet Entry d'un autre type):

Code Java :
import java.util.Map.Entry;


Fanny
vendredi 27 août 2010 à 23:25:22 | Re : Exception java.lang erreur

orchideor

Merci Infiniment Fanny pour toute ces Informations ^^.

Le problème est résolu grâce à ton aide.
vendredi 27 août 2010 à 23:44:45 | Re : Exception java.lang erreur

HFanny


Pas de soucis, n'oublie pas d'accepter une réponse si elle a répondu à ta question (histoire d'y voir plus clair dans la liste des problèmes qui sont posés / résolus).

Fanny

1 2

Cette discussion est classée dans : java, exception, tostring, week, elementat


Répondre à ce message

Sujets en rapport avec ce message

exception java [ par salim01 ] lorsque le programme est exécuté il arrive que des actions provoquent des erreurs et les exceptions vont les neutraliser.Quelqu'un aurait un exemple c pb Serveur exception [ par projet2501 ] Code source : import java.lang.*; import java.io.*; import java.net.*; public class Serveur { InetAddress addr; ServerSocket srv Exception in thread "main" java.lang.noclassDefFoundError: [ par zzt6p2 ] Salut à tous,Je suis novice je viens d'installer JDK 1.4j'ai configurer le pathen mode command sous windowsje compil mon fichier text avec javacj'obti java.lang.NoSuchMethodError: main Exception in thread "main" [ par lisa_a ] apres avoir reçu ce message d'erreur, j'ai simplifié mon code jusqu'à public class main { public void main() { System.out.println(); java bean et connection à une base de donnée [ par foued123 ] bonjourje une probleme lors de l'affichage d'une page jspun peut de détaille.je une classe bean qui est appellé SelectBean et sa contenu est :package probleme avec une exception de java [ par gaga38 ] salut à tous,voila je suis confronter a l'exception : java.lang.ClassFormatError alors les questions que je me pose, c'est:est ce q probleme avec une exception de java [ par gaga38 ] salut à tous,voila je suis confronter a l'exception : java.lang.ClassFormatError alors les questions que je me pose, c'est:est ce q "Exception in thread "main" java.lang.NoClassDefFoundError: Bonjour" [ par billou101 ] Salut,Je suis passé de Win2k à WinXP et j'en ai profité pour installé le nouveau JDK.J'ai spécifié le chemins:./bin./lib./include./demodans le "path"J Exception in thread "main" java.lang.NoSuchMethodError:main [ par Jaliva ] jalivaje n'arrive plus excécuter mon fichier java le message erreur java testException in thread "main" java.lang.NoSuchMethodError:main ???merci de erreur compilation ! [ par TitieGarou ] Bonjour,J ai developpé un FTP client serveur. J ai une erreur que je n arrive pas a resoudre :JFrame.java [171:1] unreported exception java.net.Unknow


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 12,137 sec (4)

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