Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les forums > Programmation > Langage Java > Problème de substring > Lecture du sujet

Problème de substring

Vous devez être inscrit pour pouvoir poster des messages

RésoluLe problème de ce sujet a été résolu

Page : 1 
Auteur Message
1 visiteur sur ce sujet (1 anonyme)
Page : 1 
Hors ligne Le tarteur # Posté le 06/10/2008 à 23:37:58
Beze l'pigeon.
Avatar
Groupe : Membres
Bonjour a tous.

J'ai crée un petit projet pour crypter une phrase (cryptage très simple qui décale chaque lettre d'une phrase par la lettre suivante dans l'alphabet).

Mon problème?
Code : Autre
1
2
3
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -18
        at java.lang.String.substring(Unknown Source)
        at Crypt.Cryptage.main(Cryptage.java:21)


Mon code:
Code : Java
 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
package Crypt;

public class Cryptage {

	
	public static void main(String[] args) {
		int n,i,nbr=1;
		String phrase,extrait="vide";				
		String alpha= new String("abcdefghijklmnopqrstuvwxyza");
		
		System.out.println("Entrez une phrase:");
		phrase=Clavier.lireString();
		n=phrase.length();
		
		String mot[]= new String[nbr];
		
		for(i=0;i<n;i++)
		{
			extrait = phrase.substring(i,1);				
			nbr = alpha.indexOf(extrait);			
			mot[i] = alpha.substring(nbr,1);			
		}
		for(i=0;i<n;i++)
		{
			System.out.println(mot[i]);
		}
		

	}

}


Merci d'avance :)

Si on sort une blague pas drôle et que la personne en ri n'a-t-elle pas plus d'humour que celle qui n'en rigole pas ?! o_O









 
Hors ligne leonsulivan # Posté le 06/10/2008 à 23:53:00
Avatar
Groupe : Membres
Cette réponse a aidé l'auteur du sujet Cette réponse a aidé l'auteur du sujet
Bonsoir.

Comme ça sans trop chercher je vois déjà deux petites erreurs :

Citation

package Crypt;

public class Cryptage {


public static void main(String[] args) {
int n,i,nbr=1;
String phrase,extrait="vide";
String alpha= new String("abcdefghijklmnopqrstuvwxyza");

System.out.println("Entrez une phrase:");
phrase=Clavier.lireString();
n=phrase.length();

String mot[]= new String[nbr];

for(i=0;i<n;i++)
{
extrait = phrase.substring(i,1);
nbr = alpha.indexOf(extrait);
mot[i] = alpha.substring(nbr,1);
}
for(i=0;i<n;i++)
{
System.out.println(mot[i]);
}


}
}


Voila ce que je mettrai :
Code : Java
 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
package Crypt;

public class Cryptage {

	
	public static void main(String[] args) {
		int n,i,nbr=1;
		String phrase,extrait="vide";				
		String alpha= new String("abcdefghijklmnopqrstuvwxyza");
		
		System.out.println("Entrez une phrase:");
		phrase=Clavier.lireString();
		n=phrase.length();
		
		String mot[]= new String[n];
		
		for(i=0;i<n;i++)
		{
			extrait = phrase.substring(i,i+1);				
			nbr = alpha.indexOf(extrait);			
			mot[i] = alpha.substring(nbr,nbr+1);			
		}
		for(i=0;i<n;i++)
		{
			System.out.println(mot[i]);
		}
	}
}


Après j'ai pas regardé ce que faisait le programme donc je ne sais pas si cela fait ce que tu veut, mais en tout cas il ne plante plus ;)

Edit :

Tu peut aussi remplacer "extrait" qui est un String par un char ce qui te fera gagner du temps d'éxecution.
Ainsi tu peut remplacerla méthode :

phrase.substring(i,i+1); par
phrase.charAt(i)
Édité le 07/10/2008 à 00:02:32 par leonsulivan
 
Hors ligne Floooder # Posté le 06/10/2008 à 23:53:34
Groupe : Membres
Cette réponse a aidé l'auteur du sujet Cette réponse a aidé l'auteur du sujet
Citation
String substring(int beginIndex, int endIndex)
Returns a new string that is a substring of this String.


Donc ici ton erreur viens d'une mal comprehension de la fonction, en effet c'est substing(min,max) et pas substring(start,longueur)
doc de la fonction ici
Édité le 06/10/2008 à 23:56:45 par Floooder
Hors ligne Le tarteur # Posté le 07/10/2008 à 00:02:09
Beze l'pigeon.
Avatar
Groupe : Membres
Merci beaucoup, j'avais même oublié d'incrémenter ici:

nbr = alpha.indexOf(extrait)+1;

Mes erreurs venaient donc bien d'une mal compréhension de la fonction ainsi qu'une erreur au niveau de la taille du tableau.

;)

Si on sort une blague pas drôle et que la personne en ri n'a-t-elle pas plus d'humour que celle qui n'en rigole pas ?! o_O









 

Retour au forum "Langage Java" ou à la liste des forums

Vous devez être inscrit pour pouvoir poster des messages

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 626 Zéros connectés | Requêtes SQL 7 requêtes | Temps de génération de la page : Total (SQL) 0.0445s (0.0188s)