Java, array
Salve a tutti, perché questo pezzo di codice anche se funziona dà una eccezione? Come andrebbe aggiustato per renderlo funzionante?
Grazie.
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
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(); } }}
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....
i= 0 -----------> stringhe[0] PRIMO ELEMENTO inserito in 0 ;
i= 1 ---------------> stringhe[1] SECONDO ELEMENTO inserito in 1 ;
cosi hai gia' inserito due elementi....
Ho corretto, ma l'eccezione resta
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at esercizi.StringaConcatenazione.main
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at esercizi.StringaConcatenazione.main
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...
Risolto, c'era un pezzo di codice che non avevo cancellato...grazie.


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]))); } }
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]
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]