Java eccezione

Lionel2
Salve,

/*
 * 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
Rggb1
"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.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.