Exception in thread "main" String index out of range: -71

Fermé
domxaline - 31 juil. 2015 à 08:29
 domxaline - 1 août 2015 à 11:09
Bonjour,
bonjour
j'ai écrit ce programme
le but de mon programme est:
cryptographie par une substitution aléatoire,on utilise un alphabet-clé, dans lequel les lettres se succèdent de manière désordonnée;
exemple:
HYLUJPVREAKBNDOFSQZCWMGITX
A deviendront H, B deviendront Y etc...

la clé sera saisi par l'utilisateur

lors de compilations j'ai un message suivantes:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -71
at java.lang.String.substring(Unknown Source)
at Divers4.main(Divers4.java:23)

quelqu'un peut m'aider svp


import java.util.Scanner;
public class Divers4
{
public static void main(String[] args)
{
String bla,code;
int i,decal;
System.out.println("Entrez la phrase à coder:");
Scanner sc=new Scanner(System.in);
bla=sc.nextLine();
System.out.println("Entrez l'alphabet clé:");
char cle=sc.next().charAt(0);
String alpha="abcdefghijklmnopqrstuvwxyz";
code="";
for(i=1;i<bla.length();i++)
{
String let=bla.substring(i,1);
boolean pos=alpha.contains(bla);
code = bla.substring(cle,i);
}
bla=code;
System.out.println("La phrase codée est:"+bla);
}
}

3 réponses

il n'y a personne pour m'aider?
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
1 août 2015 à 10:38
Commences par relire ton code, tu fais n'importe quoi...

String let=bla.substring(i,1);  // ne sert à rien, tu n'utilises jamais let
boolean pos=alpha.contains(bla);// ne sert à rien, tu n'utilises jamais pos
code = bla.substring(cle,i); // substring prends des entiers en paramètre, pas des char
0
c'est vrai vous avez raison
0
en plus, je ne sais pas comment continuer mon prg
0