Java eccezione
Salve,
Questo programma mi da una eccezione anche se funziona, dove sbaglio e perché? Grazie.
/*
* Scrivere un programma che chiede all'utente di inserire due stringhe a e b
* della stessa lunghezza, e stampa la stringa ottenuta prendendo
* alternativamente un carattere da a e uno da b. Ad esempio, se a="hello" e
* b="world", il programma deve stampare hweolrllod. Il programma deve far
* ripetere l'immissione all'utente se le stringhe inserite non hanno la stessa
* lunghezza.
*
*/
package esercizi;
import java.util.Scanner;
/**
*
* @author Lionel
*/
public class AlternaLettere {
public static void main(String [] args){
String stringaUno;
String stringaDue;
int lunghezzaStringaUno;
int lunghezzaStringaDue;
int i;
Scanner in = new Scanner(System.in);
do{
System.out.println("Inserisci stringa: ");
stringaUno = in.nextLine();
lunghezzaStringaUno = stringaUno.length();
stringaDue = in.nextLine();
lunghezzaStringaDue = stringaDue.length();
if(lunghezzaStringaUno!=lunghezzaStringaDue){
System.out.println("Immettere stringhe della stessa lunghezza! ");
}
}
while(lunghezzaStringaUno!=lunghezzaStringaDue);
for(i=0;i<=(lunghezzaStringaUno+lunghezzaStringaDue);i++){
System.out.print(stringaUno.substring(i, i+1).concat(stringaDue.substring(i, i+1)));
}
}
}Questo programma mi da una eccezione anche se funziona, dove sbaglio e perché? Grazie.
Inserisci stringa:
hello
world
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 6
hweolrllod at java.lang.String.substring(String.java:1955)
at esercizi.AlternaLettere.main(AlternaLettere.java:43)
Java Result: 1
BUILD SUCCESSFUL (total time: 10 seconds)
Risposte
"Lionel":for(i=0;i<=(lunghezzaStringaUno+lunghezzaStringaDue);i++){
Questo programma mi da una eccezione anche se funziona, dove sbaglio e perché? Grazie.
Sbagli dove segnalato; se la lunghezza delle stringhe è $l$, esegui un ciclo su $2l+1$ posizioni mentre devi (ovviamente) eseguirlo su $l$ posizioni.