Java, array

Lionel2
Salve a tutti, perché questo pezzo di codice anche se funziona dà una eccezione? Come andrebbe aggiustato per renderlo funzionante?


   public static void main(String []args){
        String [] stringhe;
        int i;
        stringhe = new String[2];
        for(i = 0; i <= 2; i++){
           Scanner in = new Scanner(System.in);
           System.out.println("Inserirsci stringa" +i);
           stringhe[i] = in.nextLine();
        }


Grazie.

Risposte
valesyle92
ecco qui :) :)





import java.util.Scanner;
class prova {



public static void main(String []args){
        String [] stringhe;
        int i;
        stringhe = new String[2];
        for(i = 0; i <= 1; i++){ 
           Scanner in = new Scanner(System.in);
           System.out.println("Inserirsci stringa" +i);
           stringhe[i] = in.nextLine();
        }
}}






valesyle92
tu hai messo nel for i che va fino a due ....invece va fino ad uno visto che gli indici partono da zero ,,,, mentre String[2] ti indica che ci sono due elementi ....ma questi verranno posizionati a partire dalla posizione zero....

i= 0 -----------> stringhe[0] PRIMO ELEMENTO inserito in 0 ;

i= 1 ---------------> stringhe[1] SECONDO ELEMENTO inserito in 1 ;


cosi hai gia' inserito due elementi....

Lionel2
Ho corretto, ma l'eccezione resta

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at esercizi.StringaConcatenazione.main

valesyle92
a funziona sul mio java...non mi da nessun problema.... hai forse aperti altri programmi java? prova a chiuderli tutti se si e a lanciare solo quello...

Lionel2
Risolto, c'era un pezzo di codice che non avevo cancellato...grazie.

valesyle92
:) :)

Lionel2
Ti mando la versione finale del programma giusto per completezza. Funziona, forse c'era un metodo più raffinato?

/*
 * Scrivere un programma che date tre stringhe inserite a linea di comando 
 * visualizza la concatenazione delle loro iniziali.
 */
package esercizi;

import java.util.Scanner;

/**
 *
 * @author Lionel
 */
public class StringaConcatenazione {
    public static void main(String []args){
        String [] stringhe;
        String [] primoCarattereStringa;
        int i;
        stringhe = new String[3];
        for(i = 0; i <=2 ; i++){
           Scanner in = new Scanner(System.in);
           System.out.println("Inserisci stringa" +i);
           stringhe[i] = in.nextLine();
        }
        
        primoCarattereStringa = new String[3];
        for (i = 0; i<=2; i++){
            primoCarattereStringa[i] = stringhe[i].substring(0,1);
        }      
        System.out.println(primoCarattereStringa[0].concat(primoCarattereStringa[1].concat(primoCarattereStringa[2])));
    }
}

valesyle92
allora il tuo programma va bene ...io ho accorciato la parte finale
java.util.Scanner;

/**
*
* @author Lionel
*/
public class StringaConcatenazione {
public static void main(String []args){
String [] stringhe;

int i;
stringhe = new String[3];
for(i = 0; i <=2 ; i++){
Scanner in = new Scanner(System.in);
System.out.println("Inserisci stringa" +i);
stringhe = in.nextLine();
}


String primicaratteri = " "; // questa e' la stringa di accumulazione, verra' accumulato qui dentro ogni primo carattere
for (i = 0; i<=2; i++){
primicaratteri= primicaratteri+stringhe.charAt(0);
}
System.out.println(primicaratteri);
}
}][/code]

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