J'ai un tel programme:Pourquoi mon code me donne-t-il une exception hors de portée?
import java.util.Scanner; import java.io.*;
class C { public static void main (String[] args) throws IOException{
System.out.println("Wpisz teks do zakodowania: ");
String tekst;
Scanner odczyt = new Scanner(System.in);
tekst = odczyt.nextLine();
System.out.println("Tekst odszyfrowany:" + tekst);
char[]alfabet = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
int dlugalf=26;
System.out.print("Tekst zaszyfrowany:");
int a = 0;
for(int i=0;;){
System.out.print(tekst.charAt(a));
a++;
}
}
}
Après son lancement, vous devriez voir la question et vous demander de saisir du texte. Ensuite, il devrait montrer le signe que j'ai écrit, et le programme doit charger chacune de ces lettres individuellement, pas comme une chaîne entière. Mais il apparaît alors une erreur:
Exception in thread "main" java.lang.StringIndexOut OfBoundsException: String index out of range: 10
at java.lang.String.charAt(Unknown Source)
at C.main(C.java:34)
Il est provoqué par une chaîne vide. Comment puis-je m'en débarrasser? J'ai essayé avec cette commande:
if (!tekst.isEmpty() && tekst.charAt(0) == 'R');
mais cela n'a pas fonctionné.
Désolé pour les erreurs; Je ne parle pas très bien anglais.
Eh bien, je ne sais pas quelle langue ce poste est, mais je peux voir que vous faites une impression en boucle inifite en obtenant un omble chevalier à l'index _a_ et _a_ finira par sortir des limites de votre tableau –