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.